如果 Karma 测试失败,如何防止 PowerShell 失败
How do I prevent PowerShell from failing if Karma has failed tests
问题
当我通过 PowerShell 为基线分支 运行 Karma 时,如果结果中有任何失败的测试,PowerShell 的反应方式与执行 Environment::Exit(1)
类似。这会导致 Jenkins 构建在没有 运行 其余组件的情况下过早失败。我想绕过这个,这样作业只有在出现合法问题时才会失败,当 运行ning 对目标分支(包含代码更改的分支)的业力时发现失败的测试,或者新行的代码覆盖率是低于最低要求。
背景
我正在与 Jenkins、PowerShell 和 Karma 合作,为 Web 应用程序提供代码覆盖率测试。在 Jenkins 中,我有一个执行 karma 的 PowerShell 任务:
在作业中,我正在检查两个分支(一个作为基线,另一个包含 code/test 更新)。我恢复所有 NuGet 包,然后构建基线分支的解决方案。接下来,我运行 karma 得到当前的覆盖率。然后,我为 Target Branch 构建解决方案,然后 运行ning Karma 获得代码覆盖率。使用 SonarQube,我正在比较结果以提供新的线路覆盖范围。
我已经尝试过的事情:
- 加入
-ErrorAction SilentlyContinue
- 调查质量关卡
- 查找有关
karma start
的文档
- 在
karma start
命令的末尾添加 | $true
和 || $true
代码示例
& $nodePath $karmaPath start $karmaTest --log-level debug
$nodePath
只是 node.exe
的文件路径
$karmaPath
只是 karma
的文件路径
$karmaTest
是karma.conf.ci.js文件的文件路径
失败的原因是返回的退出代码。
如果您 运行 在 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
问题
当我通过 PowerShell 为基线分支 运行 Karma 时,如果结果中有任何失败的测试,PowerShell 的反应方式与执行 Environment::Exit(1)
类似。这会导致 Jenkins 构建在没有 运行 其余组件的情况下过早失败。我想绕过这个,这样作业只有在出现合法问题时才会失败,当 运行ning 对目标分支(包含代码更改的分支)的业力时发现失败的测试,或者新行的代码覆盖率是低于最低要求。
背景
我正在与 Jenkins、PowerShell 和 Karma 合作,为 Web 应用程序提供代码覆盖率测试。在 Jenkins 中,我有一个执行 karma 的 PowerShell 任务:
在作业中,我正在检查两个分支(一个作为基线,另一个包含 code/test 更新)。我恢复所有 NuGet 包,然后构建基线分支的解决方案。接下来,我运行 karma 得到当前的覆盖率。然后,我为 Target Branch 构建解决方案,然后 运行ning Karma 获得代码覆盖率。使用 SonarQube,我正在比较结果以提供新的线路覆盖范围。
我已经尝试过的事情:
- 加入
-ErrorAction SilentlyContinue
- 调查质量关卡
- 查找有关
karma start
的文档
- 在
karma start
命令的末尾添加| $true
和|| $true
代码示例
& $nodePath $karmaPath start $karmaTest --log-level debug
$nodePath
只是 node.exe
$karmaPath
只是 karma
$karmaTest
是karma.conf.ci.js文件的文件路径
失败的原因是返回的退出代码。 如果您 运行 在 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