2013-09-25 12 views
10

Sto scrivendo alcuni test di unità. Sto eseguendo i test richiamando direttamente le classi (piuttosto che invocando un altro programma). Il problema è che alcune di queste classi utilizzano dati definiti da percorsi relativi, quindi richiedono che il programma venga avviato in una directory specifica. Come posso cambiare questo in Java?Directory di lavoro del file di modifiche Java

Ad esempio, il mio test dell'unità inizia nel C:/unittest ei dati che mi servono sono C:/OtherProject. Non voglio modificare il codice del altro progetto, se possibile, c'è qualcosa di simile in java:

File.setWorkingDir("C:/OtherProject"); 

questo modo, quando qualcosa come

File file = new File("data/data.csv"); 

leggerò C:/OtherProject/data/data.csv invece di C:/unittest/data/data.csv.

+0

Come ottenere una copia dei dati a scopo di test nella directory di test? – Fildor

+0

ASAIK, non c'è nulla di simile disponibile. –

+0

Ecco perché le persone usano il database per condividere gli stessi dati, gestire gli stessi dati. –

risposta

11

Aggiornamento della mia risposta, dal momento che VolkerSeibt ha sottolineato che non era corretto. Buona pesca.

Questo è possibile tramite System.setProperty. È possibile modificare la directory di lavoro corrente modificando la proprietà di sistema "user.dir":

System.setProperty("user.dir", "/foo/bar"); 

Vedi http://www.javacodex.com/Files/Set-The-Current-Working-Directory per ulteriori spiegazioni.

+0

Ho fatto un sacco di ricerche, questo sembra il caso. L'ho risolto con una classe statica 'FileUtil' in cui ho archiviato la directory di lavoro (e ho accessors), e poi una funzione 'loadFile' che essenzialmente antepone la directory di lavoro al percorso del file passato. – Andy

+1

Questo è sbagliato. Vedi http://www.javacodex.com/Files/Set-The-Current-Working-Directory. Funziona almeno su Windows e Linux. –

+0

@VolkerSeibt: buona presa. Ho aggiornato la mia risposta. – Bucket

0

Penso che la directory di lavoro sia determinata dalla directory in cui è stato avviato jvm (la directory utilizzata durante l'esecuzione di java).

Problemi correlati