【问题标题】:CUnit failures in hudson show success哈德逊的 CUnit 失败表明成功
【发布时间】:2012-05-24 07:49:48
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c unit-testing hudson cunit


    【解决方案1】:

    您可以使用 CUnit XML 来报告您的测试结果。然后在 Jenkins 中使用“Publish JUnit test result report”来展示结果。

    查看用于 XML 输出的 CUnit 自动化:http://cunit.sourceforge.net/doc/running_tests.html#automated

    【讨论】:

      【解决方案2】:

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

      它默认生成一个名为 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 > Test-Results.xml

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

        测试结果.xml

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

      • 如果所有测试都是绿色的,则成功
      • 如果您至少有一次故障,则不稳定
      • 完整的测试结果趋势

      【讨论】:

        【解决方案3】:

        我不确定这是否是您要查找的内容,但 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 不报告通过的测试。

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 我试过打印 $?变量,但它显示 0 表示失败和成功
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-24
          • 2011-09-25
          • 2011-05-24
          • 1970-01-01
          • 1970-01-01
          • 2011-06-20
          相关资源
          最近更新 更多