2012-05-16 66 views
4

我把單元測試在C運行哈德遜,但是當我有一個測試失敗它顯示在構建成功,但必須出現失敗!在哈德遜CUnit失敗顯示成功

我使用gcc來編譯和運行一樣,在哈德森的可執行文件:

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

很shell命令,我怎麼能得到失敗,並顯示它?

回答

-1

退出代碼存儲在變量$?中,我假設如果測試失敗它將被設置爲非零。

......如果是unixy的話,無論如何。

+0

我試過打印$?變量,但它顯示0失敗併成功 – guisantogui

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; 

我不知道哈德森/詹金斯如何與這個交易,但返回非零值會有的CMake/CTEST不報告通過測試。

1

您可以告訴CUnit按照Bjerking的建議自動運行。

它默認生成名爲CUnitAutomated-Results.xml的Xml。

此xml必須轉換爲從Jenkins的「Publish JUnit測試結果報告」任務中讀取。

步驟:

  • 在您的測試程序

    (即test.c的)調用

    CU_automated_run_tests();

  • 製作和詹金斯用這樣的命令來調用你的測試程序:

    ./test

  • 獲取CUnit-to-JUnit transform,並把它放在你的構建機器
  • 變換CUnitAutomated-Results.xml對試驗爲result.xml使用庫尼特到junit.xsl:

    xsltproc的--novalid ../Build/cunit-to-junit.xsl CUnitAutomated-Results.xml>測試-Results.xml

  • 添加「發佈JUnit測試結果報告」任務並指向:

    測試結果。XML

現在,當你建立你的項目,你可以獲得:

  • 成功,如果所有的測試都是綠色
  • 不穩定,如果你有至少一次失敗
  • 完整的測試結果趨勢