Mamy kompilację, która działa na TeamCity i zawiera kilka różnych projektów testowych. Każdy z nich uruchomić jeden po drugim, i używamy MSTest.exe z Rakefile aby zgrać wszystko, wygląda następująco:Jak mogę spowodować, że MSTest.exe zwróci 0, nawet jeśli test się nie powiedzie?
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
To daje piękny plik TRX że TeamCity można analizować i wszystko, co dla miła czysta karta raportu. Jednak MSTest.exe zwraca 1, jeśli test się nie powiedzie, a rake zostanie zinterpretowany jako niepowodzenie i spowoduje, że pozostałe testy nie zostaną uruchomione.
Chcemy stłumić to zachowanie; chcemy, aby kompilacja nadal działała, gdy test się nie powiedzie, abyśmy mogli zobaczyć, jakie inne testy mogą również zawieść. Jak możemy przekonać Rake'a, aby zignorował kod powrotu i/lub spowodował, że MSTest.exe nie wyemitował błędnego kodu powrotu, jeśli test się nie powiedzie?
Czy mówisz, że jeśli 1 test w tym zestawie ('test_danych') nie powiedzie się, zatrzymuje testowy przebieg zdefiniowany przez to zadanie? Nie myślałem, że mstest tak to działa. Lub, czy mówisz, że jeśli 'data_test' nie powiedzie się, to kolejne całe zadanie testowe nie działa? –
Ten ostatni. Po data_test mogę chcieć uruchomić sql_test, a mstest zwracając niezerowe przerywa plik rake. – GWLlosa