2016-01-15 17 views
5

Abbiamo una build che funziona su TeamCity e contiene diversi progetti di test. Ognuno di essi corrono uno dopo l'altro, e stiamo utilizzando MSTest.exe da un Rakefile al fine di orchestrare tutto, questa convenzione:Come posso rendere MSTest.exe restituire uno 0 anche se un test fallisce?

desc 'Run Unit Tests' 
mstest :data_test => [:build_database_tests] do |mstest| 
    puts build_header("Data Tests") 
    mstest.command = msTestCommand 
    mstest.parameters = [ 
    "/resultsfile:dTest.trx", 
    "/detail:errormessage", 
    "/detail:description", 
    "/usestderr" 
    ] 
    mstest.assemblies "../../../Database/DataTests/bin/Release/DataTests.dll" 
end 

Questo produce un file TRX bello che TeamCity può analizzare e tutto, rendendo per un bella scheda rapporto pulito. Tuttavia, il file MSTest.exe restituisce un 1 se un test fallisce, il quale rake interpreta come un errore e fa sì che il resto dei test non venga eseguito.

Vorremmo sopprimere questo comportamento; vogliamo che la generazione continui a funzionare quando il test fallisce, in modo che possiamo vedere quali altri test potrebbero fallire. Come possiamo ottenere che Rake ignori il codice di ritorno e/o che MSTest.exe non emetta un codice di ritorno in errore se un test fallisce?

+0

Stai dicendo che se 1 test all'interno di questo set ('data_test') non riesce, interrompe l'esecuzione di test definita da questa attività? Non pensavo che la cosa più semplice fosse così. Oppure, stai dicendo che se 'data_test' fallisce, allora un'altra intera attività di test non viene eseguita? –

+0

Quest'ultimo. Dopo data_test, potrei voler eseguire sql_test e il più semplice restituire un non zero annulla il rakefile. – GWLlosa

risposta

2

MSTest esegue da solo TUTTI i set di test, anche se il precedente non è riuscito. Il tuo problema riguarda l'interpretazione che sta facendo Rake. La maggior parte, se non tutti, i linguaggi di compilazione (ANT, MSBuild, Gradle, ecc.) Hanno un "Continua errore" come comportamento.

Facendo una rapida ricerca su Google per "rake proseguire sulla errore" ho trovato un paio di link:

http://www.rake.build/fascicles/004-ignore-failed-tasks.html Continue Rake after failure

La sostanza di base ho ottenuto è stato che è possibile utilizzare sh per iterare su una serie di attività e ignora i guasti in modo che TUTTE le attività vengano eseguite.

Problemi correlati