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?
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? –
Quest'ultimo. Dopo data_test, potrei voler eseguire sql_test e il più semplice restituire un non zero annulla il rakefile. – GWLlosa