翻譯|使用教程|編輯:李顯亮|2021-07-16 11:03:55.477|閱讀 377 次
概述:Parasoft C/C+test 可以將使用 CppUnit 和 CppUtest 執(zhí)行的測試的結果發(fā)送到 DTP 服務器,以及將測試與代碼覆蓋率相關聯(lián)。要將 CppUnit 或 CppUtest 與 C/C++test 集成,需要將結果偵聽器和覆蓋注釋器安裝到現(xiàn)有的 CppUnit 或 CppUtest 基礎結構中。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Parasoft C/C++test針對C/C++開發(fā)的專業(yè)白盒自動化測試方案,能有效提高軟件開發(fā)效率和代碼質(zhì)量。C++test 可以進行靜態(tài)分析,全面代碼審查,運行時錯誤檢測,并在單元測試和組件測試中集成覆蓋率分析。
Parasoft C/C++test 允許您運行在單元測試工具中創(chuàng)建的單元測試并將結果報告給 DTP。
Parasoft C/C+test 可以將使用 CppUnit 和 CppUtest 執(zhí)行的測試的結果發(fā)送到 DTP 服務器,以及將測試與代碼覆蓋率相關聯(lián)。要將 CppUnit 或 CppUtest 與 C/C++test 集成,需要將結果偵聽器和覆蓋注釋器安裝到現(xiàn)有的 CppUnit 或 CppUtest 基礎結構中
典型的集成包括結果偵聽器和覆蓋注釋器,它們?yōu)槟峁┯嘘P測試結果和覆蓋的完整信息。您可以選擇僅安裝結果偵聽器以進行輕量級測試或比較有覆蓋和無覆蓋的結果。
將 C/C++test 安裝到測試設置中
本節(jié)描述了 CppUnit 和 CppUtest 設置以及結果偵聽器和覆蓋率注釋器。如果您選擇僅安裝結果偵聽器,請?zhí)^所有提及覆蓋注釋器的行。
將 C/C++test 安裝到 CppUnit 安裝程序中
1、在包含 CppUnit 主函數(shù)的源文件中包含一個專用的頭文件:
#include "cpptest/extensions/cppunit/results_listener.h" #include "cpptest/extensions/cppunit/coverage_annotator.h"
2、安裝結果監(jiān)聽器。安裝細節(jié)將取決于您用來執(zhí)行單元測試的 CppUnit 框架的 TestRunner 類。對于簡單的設置,您修改后的 main 函數(shù)可能類似于以下內(nèi)容:
/* required header files */ int main() { CPPUNIT_NS::Test *suite = CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest(); CPPUNIT_NS::TextUi::TestRunner runner; runner.addTest( suite ); CppTest_CppUnitResultsListener cpptestResListener; CppTest_CppUnitCoverageAnnotator cpptestCovAnnotator; runner.eventManager().addListener( &cpptestResListener ); runner.eventManager().addListener( &cpptestCovAnnotator ); runner.setOutputter( new CPPUNIT_NS::CompilerOutputter( &runner.result(), std::cout)); bool wasSucessful = runner.run(); return wasSucessful ? 0 : 1;
根據(jù)使用的類,修改的安裝可能會有所不同。下面的示例顯示了 CppUnit 框架的兩個類的安裝。CppUnit::TestRunner 類的安裝:
CppUnit::TestResult controller; CppTest_CppUnitResultsListener cpptestResListener; CppTest_CppUnitCoverageAnnotator cpptestCovAnnotator; controller.addListener( &cpptestResListener ); controller.addListener( &cpptestCovAnnotator ); CppUnit::TestRunner runner; runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); runner.run( controller, testPath );
CppUnit::TextTestRunner 類的安裝:
CppUnit::TextTestRunner runner; CppTest_CppUnitResultsListener cpptestResListener; CppTest_CppUnitCoverageAnnotator cpptestCovAnnotator; runner.eventManager().addListener(&cpptestResListener); runner.eventManager().addListener(&cpptestCovAnnotator);
3、修改您的構建系統(tǒng)配置以使用以下-I選項指定 results_listener.h 頭文件位置:
-I<C++test Installation Directory>/runtime/include
在包含 CppUtest 主函數(shù)的源文件中包含一個專用頭文件。
#include "cpptest/extensions/cpputest/results_listener.h"
#include "cpptest/extensions/cpputest/coverage_annotator.h"
#include "cpptest/extensions/cpputest/test_runner.h"
|
安裝結果監(jiān)聽器。安裝需要將覆蓋注釋器和結果偵聽器注冊到 TestRegistry 類中。它還需要使用 C++test 提供的 TestRunner。
對于簡單的設置,您修改后的 main 函數(shù)可能類似于以下內(nèi)容:
/* required header files */
int main()
{
// Register C++Test cpputest plugins
TestRegistry* registry = TestRegistry::getCurrentRegistry();
TestPlugin* coverageAnnotator = new CppTest_CppUtestCoverageAnnotator();
registry->installPlugin(coverageAnnotator);
TestPlugin* resultsListener = new CppTest_CppUtestResultsListener();
registry->installPlugin(resultsListener);
// run the tests
int result = CppTest_CppUtestTestRunner::RunAllTests(ac, av);
delete coverageAnnotator;
delete resultsListener;
return result;
|
修改您的構建系統(tǒng)配置以使用以下 -I選項指定 results_listener.h 頭文件位置:
-I<C++test Installation Directory>/runtime/include
|
結果偵聽器可以記錄單元測試執(zhí)行結果并將數(shù)據(jù)存儲在文件中。默認情況下,執(zhí)行結果存儲在當前工作目錄的 cpptest_results.utlog 文件中。您可以通過將路徑作為參數(shù)提供給 CppTest_CppUnitResultsListener (CppUnit) 或 CppTest_CppUtestResultsListener (CppUtest) 構造函數(shù)來更改默認文件位置:
對于 CppUnit
CppTest_CppUnitResultsListener cpptestResListener("c:/myworkspace/cpptest_results.utlog");
|
對于 CppUtest
CppTest_CppUtestResultsListener cpptestResListener("c:/myworkspace/cpptest_results.utlog");
|
或者,您可以使用以下定義在測試工具構建過程中指定位置:
-DCPPTEST_UT_LOG_FILE=\"c:/home/my_workspace/cpptest_results.utlog\"
|
如果您選擇更改默認文件位置,請務必保留.utlog文件擴展名。
一旦構建了帶有結果偵聽器的測試可執(zhí)行文件,您就可以執(zhí)行預定的單元測試。在標準設置中,測試執(zhí)行期間生成的 cpptest_results.utlog 文件將放置在包含可執(zhí)行文件的目錄中。如果修改了文件路徑,文件將在指定位置創(chuàng)建。
單元測試執(zhí)行結果可以發(fā)布到 DTP 服務器或可以使用以下命令行生成本地報告:
cpptestcli -config "builtin://Unit Testing" -input <result_filename>.utlog -publish -report local_report
|
單元測試執(zhí)行結果通常與代碼覆蓋率結果相結合。
您可以使用測試開始/停止信息自動注釋代碼覆蓋率結果。這允許您有選擇地分析由特定測試或一組測試生成的代碼覆蓋率。將測試與代碼覆蓋率相關聯(lián)需要安裝覆蓋率結果注釋器和結果偵聽器,以及 C/C++test。
覆蓋注釋器將特殊標記添加到代碼覆蓋結果流中。這些標記界定了每個測試用例的覆蓋結果。覆蓋注釋器將標記添加到覆蓋結果文件中,該文件由 C/C++test 管理。注釋器不需要任何輸入?yún)?shù)。
一旦安裝了帶有結果偵聽器的測試可執(zhí)行文件,您就可以執(zhí)行預定的單元測試。在標準設置中,在測試執(zhí)行期間生成的 cpptest_results.clog 文件和 cpptest_results.utlog 文件將放置在當前工作目錄中。
運行以下命令以生成本地報告并啟用對 DTP 服務器上的代碼覆蓋率的選擇性分析:
cpptestcli -config "builtin://Unit Testing" -input cpptest_results.utlog -input cpptest_results.clog -publish -report local_report
|
Parasoft是一家專門提供軟件測試解決方案的公司,幫助企業(yè)打造無缺陷的軟件。
從開發(fā)到質(zhì)量檢查,Parasoft的技術通過集成靜態(tài)和運行時分析,單元、功能和API測試,以及服務虛擬化,在不犧牲質(zhì)量和安全性的情況下加快軟件交付,節(jié)約交付成本。
強大的報告和分析功能可幫助用戶快速查明有風險的代碼區(qū)域,并了解新代碼更改如何影響其軟件質(zhì)量,而突破性的技術將人工智能和機器學習添加到軟件測試中,使組織更容易采用和擴展跨開發(fā)和測試團隊的有效的軟件測試實踐。
Parasoft針對C/C++、Java、.NET和嵌入式的開發(fā)測試都有著30多年的深入研究,很多全國500強企業(yè)使用Parasoft的產(chǎn)品實現(xiàn)了軟件快速、高質(zhì)量的交付。
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn