2011-09-01 13 views
6

Sono nuovo al test delle unità, quindi probabilmente sto fraintendendo qualcosa di grosso, ma mi è stato chiesto di creare alcuni test unitari per il mio servizio WCF. È un servizio molto semplice che esegue una stored procedure e restituisce il risultato. La seconda linea nel mio funzionamento è questo:Test dell'unità falliti a causa della mancanza del file .config

string conn = ConfigurationManager 
    .ConnectionStrings["AtlasMirrorConnectionString"].ConnectionString; 

Tutto funziona bene quando si distribuisce il servizio, ma sotto unit test, sembra che il file di configurazione diventa invisibile. ConfigurationManager.ConnectionStrings["AtlasMirrorConnectionString"] diventa un riferimento null e genera di conseguenza.

Come posso includere il mio file di configurazione nei test? Al momento, l'unico comportamento che riesco a testare è la gestione dei file di configurazione mancanti, il che non è molto utile.

risposta

5

chiesto ancora e ancora e ancora e risposta da me la settimana scorsa e anche questa settimana :)

se hai i tuoi test unitari in un altro progetto (progetto di test generato VS, libreria di classi ecc ...) basta creare una configurazione app per quel progetto di test unitario e inserire le stesse chiavi di configurazione che hai avere nel progetto che funziona.

ovviamente sto semplificando, perché si potrebbe assolutamente voglia di personalizzare i tasti con valori di test specifici, ma come una copia di partenza ciò che funziona quindi personalizzare nel caso in cui si vuole puntare a un altro database, macchina ecc ... :)

+1

dispiace, ho fatto di ricerca, ma couldn' lo trovo ovunque. – recursive

+1

Questa soluzione funzionerà, ma non è una buona opzione a lungo termine. Sarebbe meglio avere una soluzione in cui il file di configurazione rimarrà aggiornato man mano che la soluzione cambia. – zlsmith86

3

È necessario decorare la classe di prova o il metodo con lo DeploymentItemAttribute per distribuire il file di configurazione nella directory di test.

usare qualcosa come questo sul tuo TestClass (questo presuppone che si dispone di una copia del app.config locale per i tuoi testclasses):

[DeploymentItem("app.config")] 
3

Se si desidera che il test di unità per avere sempre gli stessi valori di progetto, è possibile utilizzare la seguente riga come un evento post-generazione nel progetto di test

copy /Y "$(SolutionDir)ProjectName\App.config" "$(TargetDir)TestProjectName.dll.config" 
Problemi correlati