C 哈德逊城市大学的失败显示了成功
我把C语言的单元测试放在hudson上运行,但当我有一个测试失败时,它表明构建成功,但必须看起来失败 我使用gcc在hudson中编译和运行可执行文件,如下所示:C 哈德逊城市大学的失败显示了成功,c,unit-testing,hudson,cunit,C,Unit Testing,Hudson,Cunit,我把C语言的单元测试放在hudson上运行,但当我有一个测试失败时,它表明构建成功,但必须看起来失败 我使用gcc在hudson中编译和运行可执行文件,如下所示: gcc -lcunit test_ctesting.c -o testing ./testing 它在shell命令中,如何获取失败并显示它?退出代码存储在变量$?中,我假设如果测试失败,它将设置为非零 。。。不管怎样,如果它是unixy的东西。您可以使用CUnit XML报告您的测试结果。然后在Jenkins中使用“发布JUnit
gcc -lcunit test_ctesting.c -o testing
./testing
它在shell命令中,如何获取失败并显示它?退出代码存储在变量
$?
中,我假设如果测试失败,它将设置为非零
。。。不管怎样,如果它是unixy的东西。您可以使用CUnit XML报告您的测试结果。然后在Jenkins中使用“发布JUnit测试结果报告”来显示结果
请参阅CUnit automated for XML output:我不确定这是否是您要查找的内容,但CUnit示例代码会执行以下操作:
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
CU_cleanup_registry();
return CU_get_error();
我记不清CU_get_error()现在返回的是什么,但如果测试失败,它不会返回非零值。如果要解决此问题,需要返回失败的测试数:
unsigned int num_failures;
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
num_failures = CU_get_number_of_failures();
CU_cleanup_registry();
return num_failures;
我不确定Hudson/Jenkins如何处理这个问题,但非零返回值将使CMake/CTest无法报告通过的测试。您可以告诉CUnit按照Bjerking的建议自动运行 默认情况下,它会生成一个名为CUnitAutomated-Results.Xml的Xml 必须转换此xml才能从Jenkins中的“发布JUnit测试结果报告”任务中读取 步骤:
- 在您的测试程序(即test.c)中调用 CU_自动运行测试()
- 使用如下命令从Jenkins生成并调用测试程序: /测试
- 获取并将其放在您的构建机器上
- 使用cunit-to-junit.xsl将CUnitAutomated-Results.xml转换为Test-Result.xml: xsltproc--novalid../Build/cunit-to-junit.xsl CUnitAutomated-Results.xml>Test-Results.xml
- 添加“发布JUnit测试结果报告”任务并指向: Test-Results.xml
- 如果所有测试均为绿色,则成功
- 如果您至少有一次失败,则不稳定
- 全面测试结果趋势