Come impostare la directory di lavoro predefinita per le configurazioni di avvio di JUnit in Eclipse?

StackOverflow https://stackoverflow.com/questions/119832

Domanda

Il nostro codice Java (non il codice di test) legge i file dalla directory corrente, il che significa che la directory di lavoro deve essere impostata correttamente ogni volta che eseguiamo il codice.

Quando si avvia un test JUnit da Eclipse, viene automaticamente creata una configurazione di avvio. Il problema è che la directory di lavoro in quella configurazione di avvio è sempre di default la directory di progetto di root che è sempre sbagliata, il test fallisce, devo aprire la finestra di dialogo di configurazione di avvio, cambiare la directory di lavoro e riavviare il test. Questo è molto fastidioso. La stessa cosa accade quando eseguo un singolo metodo di prova.

Ho già preso in considerazione questi:

  • Modifica della directory corrente dal codice di test - non è possibile in base alla progettazione.
  • Quando si apre un file, passare un parametro della directory principale - troppo difficile, poiché ciò influirebbe su molti punti.
  • Utilizzare la funzione Copia configurazione di avvio di Eclipse per creare nuove configurazioni di avvio da quelle esistenti che dispongono già di un set di directory di lavoro corretto. Questo non ha molto senso qui, poiché vorrei avviare un test o un metodo di test rapidamente, semplicemente invocando "esegui questo test / metodo come test JUnit".

Tutto sommato, sembra che sia responsabilità di Eclipse, non del codice.

Esiste un modo per impostare la predefinita directory di lavoro per tutte le future configurazioni di nuova creazione JUnit?

È stato utile?

Soluzione 2

Per quanto ne so, non c'è modo di cambiare la directory di lavoro predefinita per le future configurazioni di avvio di JUnit in Eclipse 3.4. Questo problema è stato anche segnalato come bug nel database dei bug di Eclipse.

Tuttavia, è possibile in IDEA. C'è il pulsante Modifica valori predefiniti per impostare tutti i tipi di valori predefiniti per ciascun tipo di configurazione di avvio separatamente.

Altri suggerimenti

Questa è una risposta soggettiva:

Credo che tu stia facendo i tuoi test in modo sbagliato, non dovresti caricare i file da JUnit usando percorsi relativi o completi, ma invece li hai come risorse nel progetto (aggiungili al percorso di compilazione) e carica come risorse nei test JUnit. In questo modo se qualcosa cambia nel filesystem, qualcuno usa un filesystem o IDE diverso ma li ha ancora nel percorso di compilazione (come cartelle di origine) non avrai problemi.

Non sono sicuro se questo è ciò che intendi, ma se vuoi davvero cambiarlo vai alle opzioni Esegui configurazione - > La tua JUnit - > Scheda Argomenti, in fondo (Eclipse 3.4) vedi Directory di lavoro, fai clic su "altro" e modificalo da lì.

Con Eclipse 3 puoi impostare la tua directory di lavoro. Vai alla tua configurazione di esecuzione / debug - > Scheda Argomenti. Nella directory di lavoro seleziona " altro " e inserisci la radice del tuo test

Non ho trovato la possibilità di farlo, ma quello che puoi fare è usare:

getClass () getResourceAsStream (nome del file);.

getClass () getClassLoader () getResourceAsStream (nome del file);..

Questo metodo individua una risorsa sul percorso di classe. Il primo è relativo alla posizione della classe, il secondo è relativo a qualsiasi percorso di classe "entry root". È quindi possibile ad esempio aggiungere la directory principale del progetto al percorso di classe.

Questo non funziona comunque se si desidera scrivere anche su un file.

Se i tuoi test dipendono dall'attuale directory di lavoro, penso che sia responsabilità dei tuoi test configurare correttamente quella directory di lavoro e configurare le tue classi per essere testate per puntare quella directory.

Se hai una superclasse per la maggior parte dei test, scrivi una costante al suo interno. Oppure: se si dispone di una superclasse per la maggior parte dei test, scrivere un metodo di installazione @Before. Oppure: se non si dispone di una superclasse per la maggior parte dei test, scrivere una costante in una classe della base di codice di test.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top