2016-01-15 4 views
5

TeamCity上で実行され、いくつかの異なるテストプロジェクトを含むビルドがあります。彼らはそれぞれ次々に実行し、そして我々はthusly、すべてのものを編成するために、RakefileからMSTest.exeを使用している:テストに失敗してもMSTest.exeが0を返すようにするにはどうすればよいですか?

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 

はこれがために作る、チームシティーは、パース、すべてできる素敵なTRXファイルを生成しますいいクリーンなレポートタブ。ただし、MSTest.exeは、テストが失敗した場合に1を返します.Rakeは失敗と解釈し、残りのテストは実行されません。

この動作を抑制したいと思います。テストが失敗したときにビルドを継続して実行し、他のテストが失敗する可能性があることを確認します。 Rakeにリターンコードを無視させる方法と、テストが失敗した場合にMSTest.exeが失敗したリターンコードを出力しないようにする方法はありますか?

+0

このセット内の1つのテスト( 'data_test')が失敗すると、このタスクで定義されているテストが停止されますか?私はmstestがそのように走ったとは思わなかった。あるいは、 'data_test'が失敗すると、別のテストタスク全体が実行されないということですか? –

+0

後者です。 data_testの後、私はsql_testを実行し、mstestを0以外に戻してrakefileを打ち切りたいかもしれません。 – GWLlosa

答えて

2

MSTestは、それ以前に失敗した場合でも、すべてのテストセットを実行します。あなたの問題は、レーケが行っている解釈にあります。すべてではないにしても、ほとんどの言語(ANT、MSBuild、Gradleなど)には「エラー時に続行」があり、のように動作します。 のための迅速なGoogle検索行う

私はカップルのリンクを発見した「熊手は、エラー時に継続」:

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

私が得た基本的な要点は、あなたが反復するSHを使用することができますということでした一連のタスクにわたって実行し、失敗を無視してすべてのタスクを実行します。

関連する問題