2015年6月24日 星期三

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

沒有留言:

張貼留言