翻譯|使用教程|編輯:李顯亮|2021-07-16 11:03:55.477|閱讀 377 次
概述:Parasoft C/C+test 可以將使用 CppUnit 和 CppUtest 執行的測試的結果發送到 DTP 服務器,以及將測試與代碼覆蓋率相關聯。要將 CppUnit 或 CppUtest 與 C/C++test 集成,需要將結果偵聽器和覆蓋注釋器安裝到現有的 CppUnit 或 CppUtest 基礎結構中。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Parasoft C/C++test針對C/C++開發的專業白盒自動化測試方案,能有效提高軟件開發效率和代碼質量。C++test 可以進行靜態分析,全面代碼審查,運行時錯誤檢測,并在單元測試和組件測試中集成覆蓋率分析。
Parasoft C/C++test 允許您運行在單元測試工具中創建的單元測試并將結果報告給 DTP。
Parasoft C/C+test 可以將使用 CppUnit 和 CppUtest 執行的測試的結果發送到 DTP 服務器,以及將測試與代碼覆蓋率相關聯。要將 CppUnit 或 CppUtest 與 C/C++test 集成,需要將結果偵聽器和覆蓋注釋器安裝到現有的 CppUnit 或 CppUtest 基礎結構中
典型的集成包括結果偵聽器和覆蓋注釋器,它們為您提供有關測試結果和覆蓋的完整信息。您可以選擇僅安裝結果偵聽器以進行輕量級測試或比較有覆蓋和無覆蓋的結果。
將 C/C++test 安裝到測試設置中
本節描述了 CppUnit 和 CppUtest 設置以及結果偵聽器和覆蓋率注釋器。如果您選擇僅安裝結果偵聽器,請跳過所有提及覆蓋注釋器的行。
將 C/C++test 安裝到 CppUnit 安裝程序中
1、在包含 CppUnit 主函數的源文件中包含一個專用的頭文件:
#include "cpptest/extensions/cppunit/results_listener.h" #include "cpptest/extensions/cppunit/coverage_annotator.h"
2、安裝結果監聽器。安裝細節將取決于您用來執行單元測試的 CppUnit 框架的 TestRunner 類。對于簡單的設置,您修改后的 main 函數可能類似于以下內容:
/* 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;
根據使用的類,修改的安裝可能會有所不同。下面的示例顯示了 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、修改您的構建系統配置以使用以下-I選項指定 results_listener.h 頭文件位置:
-I<C++test Installation Directory>/runtime/include
在包含 CppUtest 主函數的源文件中包含一個專用頭文件。
#include "cpptest/extensions/cpputest/results_listener.h"
#include "cpptest/extensions/cpputest/coverage_annotator.h"
#include "cpptest/extensions/cpputest/test_runner.h"
|
安裝結果監聽器。安裝需要將覆蓋注釋器和結果偵聽器注冊到 TestRegistry 類中。它還需要使用 C++test 提供的 TestRunner。
對于簡單的設置,您修改后的 main 函數可能類似于以下內容:
/* 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;
|
修改您的構建系統配置以使用以下 -I選項指定 results_listener.h 頭文件位置:
-I<C++test Installation Directory>/runtime/include
|
結果偵聽器可以記錄單元測試執行結果并將數據存儲在文件中。默認情況下,執行結果存儲在當前工作目錄的 cpptest_results.utlog 文件中。您可以通過將路徑作為參數提供給 CppTest_CppUnitResultsListener (CppUnit) 或 CppTest_CppUtestResultsListener (CppUtest) 構造函數來更改默認文件位置:
對于 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文件擴展名。
一旦構建了帶有結果偵聽器的測試可執行文件,您就可以執行預定的單元測試。在標準設置中,測試執行期間生成的 cpptest_results.utlog 文件將放置在包含可執行文件的目錄中。如果修改了文件路徑,文件將在指定位置創建。
單元測試執行結果可以發布到 DTP 服務器或可以使用以下命令行生成本地報告:
cpptestcli -config "builtin://Unit Testing" -input <result_filename>.utlog -publish -report local_report
|
單元測試執行結果通常與代碼覆蓋率結果相結合。
您可以使用測試開始/停止信息自動注釋代碼覆蓋率結果。這允許您有選擇地分析由特定測試或一組測試生成的代碼覆蓋率。將測試與代碼覆蓋率相關聯需要安裝覆蓋率結果注釋器和結果偵聽器,以及 C/C++test。
覆蓋注釋器將特殊標記添加到代碼覆蓋結果流中。這些標記界定了每個測試用例的覆蓋結果。覆蓋注釋器將標記添加到覆蓋結果文件中,該文件由 C/C++test 管理。注釋器不需要任何輸入參數。
一旦安裝了帶有結果偵聽器的測試可執行文件,您就可以執行預定的單元測試。在標準設置中,在測試執行期間生成的 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是一家專門提供軟件測試解決方案的公司,幫助企業打造無缺陷的軟件。
從開發到質量檢查,Parasoft的技術通過集成靜態和運行時分析,單元、功能和API測試,以及服務虛擬化,在不犧牲質量和安全性的情況下加快軟件交付,節約交付成本。
強大的報告和分析功能可幫助用戶快速查明有風險的代碼區域,并了解新代碼更改如何影響其軟件質量,而突破性的技術將人工智能和機器學習添加到軟件測試中,使組織更容易采用和擴展跨開發和測試團隊的有效的軟件測試實踐。
Parasoft針對C/C++、Java、.NET和嵌入式的開發測試都有著30多年的深入研究,很多全國500強企業使用Parasoft的產品實現了軟件快速、高質量的交付。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn