2016-01-15 30 views
5

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?

+0

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? –

+0

Ten ostatni. Po data_test mogę chcieć uruchomić sql_test, a mstest zwracając niezerowe przerywa plik rake. – GWLlosa

Odpowiedz

2

MSTest sam wykona WSZYSTKIE zestawy testowe, nawet jeśli poprzednie zawiodły. Twój problem dotyczy interpretacji Rake. Większość, jeśli nie wszystkie, języki kompilacji (ANT, MSBuild, Gradle, etc ...) mają "Kontynuuj na błędzie" jak zachowanie.

Doing szybkiego wyszukiwania Google dla „grabie dalej błędu” znalazłem kilka linków:

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

Podstawowa istota Dostałem że można użyć sh iteracyjne nad serią zadań i ignoruj ​​awarie, aby wykonać WSZYSTKIE zadania.