我有运行测试自动化脚本的Jenkins Pipeline,并且我正在使用Jenkins MultiBranchPipeline(不是一个自由风格(作业。我想失败或通过jenkins构建,这取决于作为xml文件的执行报告。
pipeline{
stages{
stage('executing scripts')
{
'running test automation scripts '
}
stage('copying artifacts')
{
'copying testresult.xml file into jenkins workspace output folder'
}
}
post{
always{
[$class: 'XUnitBuilder',
thresholdMode: 1,
thresholds: [[$class: 'FailedThreshold', unstableThreshold: '0']],
tools: [[$class: 'XUnitDotNetTestType', pattern: 'Output\testresult.xml']]]
}
}
}
我的testresult.xml文件有4个失败的测试脚本,但Jenkins构建仍然标记为绿色。如果任何一个测试脚本失败,你能帮助我如何将我的jenkins构建标记为"失败"吗。
也许您可以直接使用步骤而不是传递类。官方文件就是这样建议的https://plugins.jenkins.io/xunit/#plugin-使用管道的内容。
post {
always{
xunit (
thresholds: [ failed(failureThreshold: '0') ],
tools: [ XUnitDotNetTestType(pattern: 'Output\testresult.xml') ]
)
}
}
Jenkinsfile单元测试阶段用于运行升压测试并在失败时停止,单元测试报告/图形将显示在Jenkins中
xUnit插件安装的前提条件
stage('Unit tests')
{
steps
{
// Run tests (censored details, so line untested, but basically)
sh 'script/run_tests.sh'
// report unit test results, and fail build if failure
xunit (
thresholds: [ skipped(failureThreshold: '0'), failed(failureThreshold: '0') ],
tools: [ BoostTest(pattern: 'unittestresults/unittests/*.xml') ]
)
// Make failed unit test stop the build pipeline
script
{
if (currentBuild.result.equals("FAILURE")) {
error "Test results did not pass"
}
}
}
}
run_tests.sh脚本使用XML运行所有单元测试,并且result_code=no(不包括构建详细信息(
mkdir -p unittestresults/unittests
for test in unittests/*; do
echo "Running $test"
./$test --log_format=XML --log_sink=unittestresults/${test}_results.xml --log_level=all --report_level=no --result_code=no
done
所有单元测试都使用类似于CMakeLists.txt 中的以下内容构建到构建根单元测试文件夹
set(PROJECT_TESTS_NAME ${PROJECT_NAME}-tests)
...
...
set_target_properties(${PROJECT_TESTS_NAME} PROPERTIES
OUTPUT_NAME "mymodule-tests"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/unittests/")
构建现在将在单元测试阶段停止,单元测试报告/图表将显示在Jenkins 中