Jenkins,vstest.console.exe和PowerShell

时间:2017-12-01 20:13:58

标签: powershell jenkins audit-logging vstest.console.exe

问题

这是一个双重问题。

我正在开发一个在目标项目中运行单元测试的Job。我有两个与我合作的变体,我试图让其中一个变得正常工作。

变体A

我正在使用VsTestRunner插件但是,我不知道如何捕获其输入,以便我可以将该信息放入外部日志。

变体B

我放弃了VsTestRunner插件,并通过PowerShell使用vstest.console.exe,但发现了以下问题:

如果任何测试失败,如何终止脚本并使构建失败?

我试着查看上面插件的代码,但它是用Java编写的(我的经验有限),我找不到它是如何终止代码的。我也找不到任何资源...而且vstest.console.exe的文档中没有关于其选项变量之外的用例的信息。我也尝试查看vstest.console.exe.config文件,希望有一些我可以使用的东西......但这也是一个破产。

问题

变体A:是否可以捕获Jenkins插件的输出?如果是这样,怎么样?

变体B:如果任何测试失败,如何终止脚本并使Jenkins构建失败?

1 个答案:

答案 0 :(得分:1)

向@ 4c74356b41大喊大叫,让我朝着正确的方向前进。

重新检查代码后,我发现 Variant 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) 
    }