/ / I test hanno esito positivo quando vengono eseguiti da Test View ma falliscono quando vengono eseguiti dall'editor test list o dalla riga di comando - c #, visual-studio-2010, unit-test, integration-test

I test hanno esito positivo quando vengono eseguiti da Test View ma falliscono quando vengono eseguiti dall'editor test list o dalla riga di comando - c #, visual-studio-2010, unit-test, integration-test

Ho una suite di test, composta da entrambi i test unitarie test di integrazione, in un progetto che utilizza C # su .NET 4.0 con Visual Studio 2010. La suite di test utilizza MSTest. Quando eseguo tutti i test in soluzione (premendo il pulsante nella barra degli strumenti di test o utilizzando l'accordo di scelta rapida Ctrl-R) tutti i test, l'integrazione e l'unità passano correttamente.

Quando cerco di eseguire gli stessi test dalla riga di comando con mstest (usando esplicitamente l'unico .testsettings file presente) o tentare di eseguirli dall'Editor Elenco test o utilizzando il .vsmdi file i test di integrazione falliscono.

I test di integrazione testano l'interfaccia utente e così hanno fattodipendenze su elementi di distribuzione e simili, mentre i test unitari no. Tuttavia, non riesco a individuare quello che è effettivamente diverso tra questi due metodi di esecuzione dei test.

Quando ispeziono l'appropriato Out directory dall'esecuzione del test, non tutti i file sono presenti.

Cosa potrebbe causare alcuni dei file che vengono distribuiti correttamente in una situazione da Visual Studio per non distribuire correttamente in un altro?

risposte:

2 per risposta № 1

Il contenuto statico è stato copiato a brevedopo ho scritto i commenti sopra. L'altro grosso problema a cui mi sono imbattuto era che il progetto di test di integrazione faceva riferimento a librerie che erano dipendenze del sistema sotto test (con copy-local impostato su true) al fine di garantire che le DLL fossero presenti quando erano necessarie. Per qualche ragione, questi si sono ostinatamente rifiutati di copiare quando i test sono stati eseguiti tramite Elenco di test o mstest.

Ciò che alla fine ho fatto per aggirare il problema è stato includere [DeploymentItem] attributi per le DLL di cui avevo bisogno. Questo ha funzionato, indipendentemente da come sono stati eseguiti i test. Quello su cui sono ancora poco chiaro, che può aver risposto alla soluzione sottostante, o fornito una soluzione migliore, è il modo in cui Test View / mstest differisce dal normale test runner (assumendo che il corretto .settings il file è stato passato a mstest.). Metto queste note / soluzioni alternative in una risposta, ma lascerò aperta la domanda nel caso in cui qualcuno possa affrontare la causa sottostante di come i diversi percorsi di esecuzione del test differiscono.