• <menu id="w2i4a"></menu>
  • logo Parasoft C/C++ test 自動(dòng)化用戶指南

    文檔首頁(yè)>>Parasoft C/C++ test 自動(dòng)化用戶指南>>Parasoft C/C++ test 自動(dòng)化用戶指南(十九):與 CppUnit 和 CppUtest 集成

    Parasoft C/C++ test 自動(dòng)化用戶指南(十九):與 CppUnit 和 CppUtest 集成


    Parasoft C/C++test針對(duì)C/C++開(kāi)發(fā)的專業(yè)白盒自動(dòng)化測(cè)試方案,能有效提高軟件開(kāi)發(fā)效率和代碼質(zhì)量。C++test 可以進(jìn)行靜態(tài)分析,全面代碼審查,運(yùn)行時(shí)錯(cuò)誤檢測(cè),并在單元測(cè)試和組件測(cè)試中集成覆蓋率分析。

    Parasoft C/C++test申請(qǐng)免費(fèi)試用


    Parasoft C/C++test 允許您運(yùn)行在單元測(cè)試工具中創(chuàng)建的單元測(cè)試并將結(jié)果報(bào)告給 DTP。

    Parasoft C/C+test 可以將使用 CppUnit 和 CppUtest 執(zhí)行的測(cè)試的結(jié)果發(fā)送到 DTP 服務(wù)器,以及將測(cè)試與代碼覆蓋率相關(guān)聯(lián)。要將 CppUnit 或 CppUtest 與 C/C++test 集成,需要將結(jié)果偵聽(tīng)器和覆蓋注釋器安裝到現(xiàn)有的 CppUnit 或 CppUtest 基礎(chǔ)結(jié)構(gòu)中

    典型的集成包括結(jié)果偵聽(tīng)器和覆蓋注釋器,它們?yōu)槟峁┯嘘P(guān)測(cè)試結(jié)果和覆蓋的完整信息。您可以選擇僅安裝結(jié)果偵聽(tīng)器以進(jìn)行輕量級(jí)測(cè)試或比較有覆蓋和無(wú)覆蓋的結(jié)果。

    將 C/C++test 安裝到測(cè)試設(shè)置中

    本節(jié)描述了 CppUnit 和 CppUtest 設(shè)置以及結(jié)果偵聽(tīng)器和覆蓋率注釋器。如果您選擇僅安裝結(jié)果偵聽(tīng)器,請(qǐng)?zhí)^(guò)所有提及覆蓋注釋器的行。

    將 C/C++test 安裝到 CppUnit 安裝程序中

    1、在包含 CppUnit 主函數(shù)的源文件中包含一個(gè)專用的頭文件:

    #include "cpptest/extensions/cppunit/results_listener.h"
    #include "cpptest/extensions/cppunit/coverage_annotator.h"

    2、安裝結(jié)果監(jiān)聽(tīng)器。安裝細(xì)節(jié)將取決于您用來(lái)執(zhí)行單元測(cè)試的 CppUnit 框架的 TestRunner 類。對(duì)于簡(jiǎn)單的設(shè)置,您修改后的 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ù)使用的類,修改的安裝可能會(huì)有所不同。下面的示例顯示了 CppUnit 框架的兩個(gè)類的安裝。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、修改您的構(gòu)建系統(tǒng)配置以使用以下-I選項(xiàng)指定 results_listener.h 頭文件位置:

    -I<C++test Installation Directory>/runtime/include

    將 C/C++test 安裝到 CppUtest 安裝程序中

    1. 在包含 CppUtest 主函數(shù)的源文件中包含一個(gè)專用頭文件。

      #include "cpptest/extensions/cpputest/results_listener.h"
      #include "cpptest/extensions/cpputest/coverage_annotator.h"
      #include "cpptest/extensions/cpputest/test_runner.h"
    2. 安裝結(jié)果監(jiān)聽(tīng)器。安裝需要將覆蓋注釋器和結(jié)果偵聽(tīng)器注冊(cè)到 TestRegistry 類中。它還需要使用 C++test 提供的 TestRunner。
      對(duì)于簡(jiǎn)單的設(shè)置,您修改后的 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;
    3. 修改您的構(gòu)建系統(tǒng)配置以使用以下 -I選項(xiàng)指定 results_listener.h 頭文件位置

      -I<C++test Installation Directory>/runtime/include

    報(bào)告 CppUnit 和 CppUtest 測(cè)試結(jié)果

    結(jié)果偵聽(tīng)器可以記錄單元測(cè)試執(zhí)行結(jié)果并將數(shù)據(jù)存儲(chǔ)在文件中。默認(rèn)情況下,執(zhí)行結(jié)果存儲(chǔ)在當(dāng)前工作目錄的 cpptest_results.utlog 文件中。您可以通過(guò)將路徑作為參數(shù)提供給 CppTest_CppUnitResultsListener (CppUnit) 或 CppTest_CppUtestResultsListener (CppUtest) 構(gòu)造函數(shù)來(lái)更改默認(rèn)文件位置:

    • 對(duì)于 CppUnit

      CppTest_CppUnitResultsListener cpptestResListener("c:/myworkspace/cpptest_results.utlog");
    • 對(duì)于 CppUtest

      CppTest_CppUtestResultsListener cpptestResListener("c:/myworkspace/cpptest_results.utlog");

    或者,您可以使用以下定義在測(cè)試工具構(gòu)建過(guò)程中指定位置:

    -DCPPTEST_UT_LOG_FILE=\"c:/home/my_workspace/cpptest_results.utlog\"

    如果您選擇更改默認(rèn)文件位置,請(qǐng)務(wù)必保留.utlog文件擴(kuò)展名。 

    一旦構(gòu)建了帶有結(jié)果偵聽(tīng)器的測(cè)試可執(zhí)行文件,您就可以執(zhí)行預(yù)定的單元測(cè)試。在標(biāo)準(zhǔn)設(shè)置中,測(cè)試執(zhí)行期間生成的 cpptest_results.utlog 文件將放置在包含可執(zhí)行文件的目錄中。如果修改了文件路徑,文件將在指定位置創(chuàng)建。

    單元測(cè)試執(zhí)行結(jié)果可以發(fā)布到 DTP 服務(wù)器或可以使用以下命令行生成本地報(bào)告:

    cpptestcli -config "builtin://Unit Testing" -input <result_filename>.utlog -publish -report local_report

    單元測(cè)試執(zhí)行結(jié)果通常與代碼覆蓋率結(jié)果相結(jié)合。

    將測(cè)試與代碼覆蓋率相關(guān)聯(lián)

    您可以使用測(cè)試開(kāi)始/停止信息自動(dòng)注釋代碼覆蓋率結(jié)果。這允許您有選擇地分析由特定測(cè)試或一組測(cè)試生成的代碼覆蓋率。將測(cè)試與代碼覆蓋率相關(guān)聯(lián)需要安裝覆蓋率結(jié)果注釋器和結(jié)果偵聽(tīng)器,以及 C/C++test。

    覆蓋注釋器將特殊標(biāo)記添加到代碼覆蓋結(jié)果流中。這些標(biāo)記界定了每個(gè)測(cè)試用例的覆蓋結(jié)果。覆蓋注釋器將標(biāo)記添加到覆蓋結(jié)果文件中,該文件由 C/C++test 管理。注釋器不需要任何輸入?yún)?shù)。

    一旦安裝了帶有結(jié)果偵聽(tīng)器的測(cè)試可執(zhí)行文件,您就可以執(zhí)行預(yù)定的單元測(cè)試。在標(biāo)準(zhǔn)設(shè)置中,在測(cè)試執(zhí)行期間生成的 cpptest_results.clog 文件和 cpptest_results.utlog 文件將放置在當(dāng)前工作目錄中。

    運(yùn)行以下命令以生成本地報(bào)告并啟用對(duì) DTP 服務(wù)器上的代碼覆蓋率的選擇性分析:

    cpptestcli -config "builtin://Unit Testing" -input cpptest_results.utlog -input cpptest_results.clog -publish -report local_report
    些文件已經(jīng)過(guò)分析。


    Parasoft——領(lǐng)先的自動(dòng)化測(cè)試工具,滿足絕大多數(shù)行業(yè)標(biāo)準(zhǔn)

    Parasoft是一家專門提供軟件測(cè)試解決方案的公司,幫助企業(yè)打造無(wú)缺陷的軟件。

    從開(kāi)發(fā)到質(zhì)量檢查,Parasoft的技術(shù)通過(guò)集成靜態(tài)和運(yùn)行時(shí)分析,單元、功能和API測(cè)試,以及服務(wù)虛擬化,在不犧牲質(zhì)量和安全性的情況下加快軟件交付,節(jié)約交付成本。

    強(qiáng)大的報(bào)告和分析功能可幫助用戶快速查明有風(fēng)險(xiǎn)的代碼區(qū)域,并了解新代碼更改如何影響其軟件質(zhì)量,而突破性的技術(shù)將人工智能和機(jī)器學(xué)習(xí)添加到軟件測(cè)試中,使組織更容易采用和擴(kuò)展跨開(kāi)發(fā)和測(cè)試團(tuán)隊(duì)的有效的軟件測(cè)試實(shí)踐。

    Parasoft針對(duì)C/C++、Java、.NET和嵌入式的開(kāi)發(fā)測(cè)試都有著30多年的深入研究,很多全國(guó)500強(qiáng)企業(yè)使用Parasoft的產(chǎn)品實(shí)現(xiàn)了軟件快速、高質(zhì)量的交付。

        獲取Parasoft資料或申請(qǐng)?jiān)囉每杉観Q:2867205852

    申請(qǐng)Parasoft測(cè)試試用

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();