Hudson的CUnit失败表明成功

时间:2012-05-16 17:42:15

标签: c unit-testing hudson cunit

我将单元测试放在C中运行hudson,但是当我测试失败时它会在构建中显示成功,但必须显示失败!

我正在使用gcc在hudson中编译和运行可执行文件:

gcc -lcunit test_ctesting.c -o testing
./testing

它在shell命令中,我怎样才能得到失败并显示它?

4 个答案:

答案 0 :(得分:1)

您可以使用CUnit XML报告测试结果。然后使用Jenkins中的“发布JUnit测试结果报告”来显示结果。

请参阅CUnit自动化XML输出:http://cunit.sourceforge.net/doc/running_tests.html#automated

答案 1 :(得分:1)

你可以告诉CUnit像Bjerking建议的那样自动运行。

默认情况下会生成一个名为CUnitAutomated-Results.xml的Xml。

必须转换此xml才能从Jenkins的“发布JUnit测试结果报告”任务中进行读取。

步骤:

  • 在您的测试程序(即test.c)中调用

    CU_automated_run_tests();

  • 使用以下命令从Jenkins制作并调用您的测试程序:

    ./测试

  • 获取CUnit-to-JUnit transform并将其放在您的构建计算机上
  • 使用cunit-to-junit.xsl将CUnitAutomated-Results.xml转换为Test-Result.xml:

    xsltproc --novalid ../Build/cunit-to-junit.xsl CUnitAutomated-Results.xml>试验Results.xml

  • 添加“发布JUnit测试结果报告”任务并指向:

    试验Results.xml

现在,当您构建项目时,您将获得:

  • 如果所有测试均为绿色则成功
  • 如果您至少有一次失败,则不稳定
  • 完整的测试结果趋势

答案 2 :(得分:0)

我不确定这是否是您正在寻找的,但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不报告通过测试。

答案 3 :(得分:-1)

退出代码存储在变量$?中,我假设如果测试失败则将其设置为非零值。

......无论如何,如果它是不合适的东西。