這次的故事是這樣的,使用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 ®istry = 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的設定裡
要注意的如下
- 建置時要建置單元測試專案
- 建置後要執行單元測試的執行檔。(輸出xml)
- 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
沒有留言:
張貼留言
(什麼是留言欄訊息?)