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 № 1Il 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.