2010-08-12 2 views
6

Sto provando a impostare alcuni test unitari, che utilizzano il database. Vorrei utilizzare un database di test sul computer dello sviluppatore anziché sul database di produzione. Il metodo che ho ora è quello di controllare una variabile di ambiente quando ci si connette al database e se questa variabile esiste per connettersi a quella locale anziché quella di produzione.Impostazione delle variabili di ambiente per tutti i test JUnit in Eclipse

È possibile impostare variabili di ambiente in Eclipse tramite le configurazioni di esecuzione, ma voglio che ciò accada ogni volta che viene eseguito un test JUnit (per ogni evenienza).

Questo è possibile in Eclipse?

risposta

5

Perché non si inserisce la connessione al database nella logica che richiede il test e solo si occupano delle variabili di ambiente nel codice di avvio (che in genere non richiede il test dell'unità)?

L'utilizzo di variabili di ambiente nei test indica in genere che la configurazione sta avvenendo troppo profondamente all'interno del codice, IME. Ove possibile, trovo molto meglio costruire oggetti con tutto ciò di cui hanno bisogno tramite l'integrazione delle dipendenze, mantenendo il codice separato dal codice di configurazione che elabora cosa iniettare.

+0

Hmmmmm .... potrebbe essere necessario eseguire qualche rielaborazione per rendere questo lavoro ... Anche se sembra essere una soluzione migliore rispetto al mix di configurazione e logica come sono attualmente ... – KLee1

1

Penso che le informazioni sulla connessione hard-coding o l'interruttore di test/produzione non siano l'idea migliore.

Fondamentalmente, abbiamo le informazioni di connessione DB nel file di proprietà. Al test unitario, usiamo un altro file di proprietà che contiene informazioni sulla connessione per il database di test. (Un DB leggero in memoria può essere ottimale per il test dell'unità.)

I test di unità di solito hanno i propri dispositivi di installazione che costituiscono un ambiente di base per ogni caso di test, quindi non dovrebbe essere un problema utilizzare una proprietà dedicata file.