Jenkins, vstest.console.exe, and PowerShell



问题

这有点两个问题。

我正在从事一项工作,该工作运行目标项目中的单元测试。我有两个与我一起工作的变体,我试图让其中一个可以正常工作。

变体A

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

变体B

我忘记了Vstestrunner插件,并且正在使用powershell使用vstest.console.exe,但发现了以下问题:

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

我尝试查看上述插件的代码,但它在Java中(我的经验有限),但我找不到它的确切终止代码。我也找不到任何资源... vstest.console.exe的文档对其选项变量之外的用例都没有。我还尝试查看vstest.console.exe.config文件,希望有我可以使用的东西...但这也是一个破产。

问题

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

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

大声喊叫到 @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) 
    }

相关内容

  • 没有找到相关文章

最新更新