2016-01-15 19 views
5

Wir haben einen Build, der auf TeamCity läuft und mehrere verschiedene Testprojekte enthält. Sie verfügen jeweils laufen nacheinander, und wir verwenden MSTest.exe von einem Rakefile, um alles zu orchestrieren, so:Wie kann ich MSTest.exe eine 0 zurückgeben, selbst wenn ein Test fehlschlägt?

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 

Dies erzeugt eine schöne TRX-Datei, die Teamcity analysieren kann und alles, für eine Herstellung schön sauber Bericht Registerkarte. Das MSTest.exe gibt jedoch eine 1 zurück, wenn ein Test fehlschlägt, der Rake als einen Fehler interpretiert und der Rest der Tests nicht ausgeführt wird.

Wir möchten dieses Verhalten unterdrücken; Wir möchten, dass der Build weiterhin ausgeführt wird, wenn der Test fehlschlägt, damit wir sehen können, welche anderen Tests ebenfalls fehlschlagen. Wie können wir Rake dazu bringen, den Rückgabecode zu ignorieren und/oder veranlassen, dass MSTest.exe keinen fehlgeschlagenen Rückgabecode ausgibt, wenn ein Test fehlschlägt?

+0

Sie sagen, dass, wenn 1 Test innerhalb dieser Menge ('data_test') fehlschlägt, es den Testlauf stoppt, der durch diese Aufgabe definiert ist? Ich glaube nicht, dass Mstest so lief. Oder sagen Sie, dass, wenn "data_test" fehlschlägt, dann eine andere ganze Testaufgabe nicht ausgeführt wird? –

+0

Letzteres. Nach data_test möchte ich vielleicht sql_test und mstest ausführen, wenn ich einen Wert ungleich Null zurückgebe, bricht das Rakefile ab. – GWLlosa

Antwort

2

MSTest selbst wird ALLE Testsätze ausführen, auch wenn der vorherige fehlgeschlagen ist. Ihr Problem ist mit der Interpretation, die Rake macht. Die meisten, wenn nicht alle Sprachen (ANT, MSBuild, Gradle, etc ...) haben ein "Continue on error" wie Verhalten.

eine schnelle Google-Suche nach Doing "Rake weiterhin auf Fehler" ich ein paar Links gefunden:

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

Der grundlegende Kern war ich bekam, dass Sie sh verwenden können, um iterieren über eine Reihe von Aufgaben und ignorieren Fehler, so dass alle Aufgaben ausgeführt werden.