Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 哈德逊城市大学的失败显示了成功_C_Unit Testing_Hudson_Cunit - Fatal编程技术网

C 哈德逊城市大学的失败显示了成功

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

我把C语言的单元测试放在hudson上运行,但当我有一个测试失败时,它表明构建成功,但必须看起来失败

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

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

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

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

我试过打印$?变量,但它显示0到失败和成功