4

我在 hudson 上运行的 C 中进行了单元测试,但是当我有一个失败的测试时,它显示构建成功,但必须出现失败!

我正在使用 gcc 在 hudson 中编译和运行可执行文件,如下所示:

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

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

4

4 回答 4

1

您可以按照 Bjerking 的建议告诉 CUnit 自动运行。

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

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

脚步:

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

    CU_automated_run_tests();

  • 使用如下命令从 Jenkins 创建并调用您的测试程序:

    。/测试

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

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

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

    测试结果.xml

现在,当您构建项目时,您会得到:

  • 如果所有测试都是绿色的,则成功
  • 如果您至少有一次失败,则不稳定
  • 完整的测试结果趋势
于 2013-03-15T14:56:23.480 回答
1

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

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

于 2012-06-02T09:17:01.650 回答
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 不报告通过的测试。

于 2012-10-03T02:07:45.120 回答
-1

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

......无论如何,如果它是unixy的东西。

于 2012-05-16T18:51:44.833 回答