2017-12-01 18 views
0

問題

これは2倍、問題のビットです。ジェンキンス、vstest.console.exe、およびPowerShellの

私はターゲットプロジェクト内で見つかった単体テストを実行するジョブに取り組んでいます。私は働いている2つのバリエーションを持っており、そのうちの1つを適切に働かせようとしています。

バリアント

私はしかし、私は外部のログにその情報を置くことができるように、その入力をキャプチャする方法がわからないVsTestRunnerプラグインを使用しています。

私はVsTestRunnerプラグインをforgoneしており、PowerShellを通じvstest.console.exeで働いていますが、次のような問題を発見した

変法B:

私はスクリプトを終了し、ビルドに失敗するにはどうすればよいのいずれかのテストが失敗した場合は?

私は上記のプラグインのコードを調べてみましたが、それはJava(私は限られた経験があります)にあり、コードをどのようにして終了するのか正確に見つけることができませんでした。私はまたこれに関するリソースを見つけることができませんでした...そして、vstest.console.exeのドキュメントはオプション変数の外でユースケースについて何も持っていません。私は、vstest.console.exe.configファイルを見て、私が使うことができるものがあることを期待してみました...でもそれはバストでした。

質問

バリアントA:それはジェンキンスプラグインの出力をキャプチャすることは可能ですか?もしそうなら、どうですか?

バリアントB:テストが失敗した場合、スクリプトを終了してJenkinsビルドに失敗するにはどうすればよいですか?

+0

テストが失敗したときに正しい終了コードが返されますか? – 4c74356b41

+0

@ 4c74356b41私はあなたに話すことができませんでした。このコマンドファイルからどのように情報にアクセスするのか分かりません。ファイルを実行すると、最後の終了コードが表示されないようです。私の知識の欠如が私にそれをすべて間違ってさせている可能性があります。しかし、コードの他の部分は失敗していないので、私の最後に存在するコードは '0'になる傾向があります。 – Brandon

+0

よく、あなたはvstest.console.exeを読んだり、powershellで試してみてくださいPowerShellから – 4c74356b41

答えて

1

私は正しい方向に私を振り回すために@ 4c74356b41に叫ぶ。

コードを再調査した結果、のバリアントBの最初の問題は、$LastExitCodeのチェックが間違った場所にあるということでした。これは、少なくとも私が探していた失敗を得ることを可能にしました。これができたら、次のようなバリエーションを利用することになりました。

Try { 
    & $vsTestConsole $testFile /any /necessary /options 

    If ($LastExitCode -ne 0) { 
     throw "TestFailure" 
    } 
} 
Catch { 
    # Custom error specifically for failed tests 
    If ($_.Exception.Message -ieq 'TestFailure') { 
     Write-Host "One or more tests failed, ending action" 
     # Terminate PS Script with an Exit Code of 1 so that Jenkins Fails the build 
     # Exiting in this manner also prevents the addition of unnecessary fluff 
     # This way you can fully customize the error response 
     [Environment]::Exit(1) 
    } 
関連する問題