C++單元測試(9) - CppUnit輸出Xml, Jenkins顯示Report

這次的標題,下得很「關鍵字」
這次的故事是這樣的,使用CppUnit單元測試框架,使用Jenkins的CI系統+xUnitTest的plug-in。

要讓CppUnit輸出Xml,再讓xUnitTest的plug-in吃到Xml,在Jenkins上顯示。

第一步,就是先看單元測試專案的main怎麼改[1]

int main()
{
    CppUnit::TestResult testresult;
    CppUnit::TestResultCollector collectedresults;
    testresult.addListener (&collectedresults);

    CppUnit::TextUi::TestRunner runner;
    CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
    runner.addTest( registry.makeTest() );
    runner.run(testresult);

    std::ofstream xmlFileOut("CppUnitTestDmServerResults.xml");
    CppUnit::XmlOutputter xmlOut(&collectedresults, xmlFileOut);
    xmlOut.write();

    return 0;
}

主要就是要讓 testresult 放進 runner.run(testresult) 參數中。
這樣Xml輸出就會有東西了。

接下來就是設定Jenkins。

Jenkins加上xUnitTest的plug-in很多文章都有寫。就不多說了。
進入你Job的設定裡
要注意的如下

  1. 建置時要建置單元測試專案
  2. 建置後要執行單元測試的執行檔。(輸出xml)
  3. xUnitTest的plug-in要吃的,也只是xml檔。

建置時要建置單元測試專案

在Visual Studio上,就是要設定.sln檔,在某種Config時,是不是會建置呢?(要把單元測試的專案打勾唷)

建置後要執行單元測試的執行檔。

在Jos的建置,加上一個「執行Windows批次指令」,執行單元測試執行檔。
(當然如果你是Linux系統,就要加一個「執行Shell」)

xUnitTest的plug-in要吃的,也只是xml檔。

在Jos的建置後動作,加上Publish xUnit test result report
在裡面再加上一個CppUnit-1.12.1 (default)
其中Pattern的欄位,填入單元測試專案的xml路徑檔名

剩下的就照說明填囉~


參考資料: [1] Using Hudson for C++/CMake/CppUnit - Posted by volkerkaiser

沒有留言:

張貼留言

(什麼是留言欄訊息?)