如果业力测试失败,如何防止PowerShell失败

时间:2019-01-15 18:56:21

标签: powershell jenkins karma-runner

问题

当我通过PowerShell为Baseline Branch运行Karma时,如果结果中有任何失败的测试,PowerShell的反应类似于执行PIL Image的过程。这会导致Jenkins构建过早地失败,而不运行其余组件。我想绕过它,以便作业仅在出现合法问题时失败,针对目标分支运行业力时发现失败的测试(分支包含代码更改),或者新行的代码覆盖率低于要求的最小值

背景

我正在与Jenkins,PowerShell和Karma一起为Web应用程序提供代码覆盖率测试。在Jenkins中,我有一个PowerShell任务可以按以下方式执行业力:

在作业中,我正在签出两个分支(一个充当基准,另一个包含代码/测试更新)。我还原所有NuGet程序包,然后构建Baseline Branch的解决方案。接下来,我运行业力以获得当前的覆盖范围。然后,我为目标分支构建解决方案,然后运行Karma以获得代码覆盖率。使用SonarQube,我正在比较结果以提供新的覆盖范围。

我已经尝试过的事情:

  • 添加Environment::Exit(1)
  • 审视质量关口
  • -ErrorAction SilentlyContinue上查找文档
  • karma start命令的末尾添加| $true|| $true

代码示例

karma start

& $nodePath $karmaPath start $karmaTest --log-level debug 只是node.exe的文件路径

$nodePath只是业力的文件路径

$karmaPath是karma.conf.ci.js文件的文件路径

1 个答案:

答案 0 :(得分:1)

失败的原因是由于返回了退出代码。 如果您在Jenkins bash脚本中运行命令,则Jenkins取消所有剩余任务。如果单元测试失败,您无论如何都不应该通过构建。 如果它们很脆,那么最好重构测试。

要解决此问题,请在运行测试脚本后通过管道发送命令。 例如

假设您在以下大致定义的package.json文件中定义了脚本

scripts:{
ng: ng;
install: npm install;
test-ci: ng test --karma-config karmaconfig --code-coverage
build: npm build
}

现在,通过使用package.json中定义的脚本,您的jenkins bash脚本如下所示。

npm run install
npm run test-ci || echo "Tests Failed"
npm run build