• <menu id="w2i4a"></menu>
  • logo Visual Studio系列教程

    文檔首頁(yè)>>Visual Studio系列教程>>Visual Studio 使用教程:在Visual Studio中編寫(xiě)C ++ DLL的單元測(cè)試

    Visual Studio 使用教程:在Visual Studio中編寫(xiě)C ++ DLL的單元測(cè)試


    Visual Studio是功能完備的 IDE,可用于編碼、調(diào)試、測(cè)試和部署到任何平臺(tái),Visual Studio使用 .NET 開(kāi)發(fā) iOS、Android 和 Web 應(yīng)用和游戲。

    點(diǎn)擊立即下載Visual Studio


    有多種測(cè)試DLL代碼的方法,具體取決于它是否導(dǎo)出要測(cè)試的功能。選擇以下方式之一:
    • 單元測(cè)試僅調(diào)用從DLL導(dǎo)出的函數(shù):按照編寫(xiě)C / C ++單元測(cè)試中所述添加單獨(dú)的測(cè)試項(xiàng)目。在測(cè)試項(xiàng)目中,添加對(duì)DLL項(xiàng)目的引用。
    • DLL被構(gòu)建為.exe文件:添加一個(gè)單獨(dú)的測(cè)試項(xiàng)目。將其鏈接到輸出目標(biāo)文件。
    • 單元測(cè)試調(diào)用未從DLL導(dǎo)出的非成員函數(shù),并且DLL可以構(gòu)建為靜態(tài)庫(kù):更改DLL項(xiàng)目,以便將其編譯為.lib文件。添加一個(gè)單獨(dú)的測(cè)試項(xiàng)目,該項(xiàng)目引用被測(cè)項(xiàng)目。這種方法的好處是允許您的測(cè)試使用未導(dǎo)出的成員,但仍將測(cè)試保留在單獨(dú)的項(xiàng)目中。
    • 單元測(cè)試必須調(diào)用未導(dǎo)出的非成員函數(shù),并且代碼必須構(gòu)建為動(dòng)態(tài)鏈接庫(kù)(DLL):在與產(chǎn)品代碼相同的項(xiàng)目中添加單元測(cè)試。

    創(chuàng)建測(cè)試
    將DLL更改為靜態(tài)庫(kù)

    • 如果您的測(cè)試必須使用DLL項(xiàng)目未導(dǎo)出的成員,并且被測(cè)試項(xiàng)目被構(gòu)建為動(dòng)態(tài)庫(kù),請(qǐng)考慮將其轉(zhuǎn)換為靜態(tài)庫(kù)。
      • 在解決方案資源管理器中,在要測(cè)試的項(xiàng)目的快捷菜單上,選擇“屬性”。將打開(kāi)項(xiàng)目“屬性”窗口。
      • 選擇“配置屬性>常規(guī)”。
      • 將配置類型設(shè)置為靜態(tài)庫(kù)(.lib)。

    引用測(cè)試項(xiàng)目中導(dǎo)出的DLL函數(shù)

    • 如果DLL項(xiàng)目導(dǎo)出了要測(cè)試的功能,則可以從測(cè)試項(xiàng)目中添加對(duì)代碼項(xiàng)目的引用。
      • 創(chuàng)建一個(gè)本機(jī)單元測(cè)試項(xiàng)目。
        • 在“文件”菜單上,選擇“新建”>“項(xiàng)目”。在“添加新項(xiàng)目”對(duì)話框中,將“語(yǔ)言”設(shè)置為C ++,然后在搜索框中鍵入“ test”。然后選擇“本機(jī)單元測(cè)試項(xiàng)目”。
      • 在解決方案資源管理器中,右鍵單擊測(cè)試項(xiàng)目,然后選擇“添加”>“引用”。
      • 選擇項(xiàng)目,然后選擇要測(cè)試的項(xiàng)目。
      • 選擇添加按鈕。
      • 在測(cè)試項(xiàng)目的屬性中,將被測(cè)試項(xiàng)目的位置添加到“包括目錄”中。
      • 選擇“配置屬性”>“ VC ++目錄”>“包含目錄”。選擇“編輯”,然后添加要測(cè)試的項(xiàng)目的頭目錄。

    將測(cè)試鏈接到對(duì)象或庫(kù)文件

    • 如果DLL沒(méi)有導(dǎo)出要測(cè)試的功能,則可以將輸出.obj或.lib文件添加到測(cè)試項(xiàng)目的依賴項(xiàng)中。
      • 創(chuàng)建一個(gè)本機(jī)單元測(cè)試項(xiàng)目。
        • 在“文件”菜單上,選擇“新建”>“項(xiàng)目”。在“添加新項(xiàng)目”對(duì)話框中,將“語(yǔ)言”設(shè)置為C ++,然后在搜索框中鍵入“ test”。然后選擇“本機(jī)單元測(cè)試項(xiàng)目”。
      • 在解決方案資源管理器中,在測(cè)試項(xiàng)目的快捷菜單上,選擇“屬性”。
      • 選擇“配置屬性>鏈接器>輸入>其他依賴關(guān)系”。
      • 選擇“編輯”,然后添加.obj或.lib文件的名稱,不要使用完整路徑名。
      • 選擇“配置屬性>鏈接器>常規(guī)>其他庫(kù)目錄”。
      • 選擇“編輯”,然后添加.obj或.lib文件的目錄路徑。該路徑通常在被測(cè)項(xiàng)目的build文件夾中。
      • 選擇“配置屬性”>“ VC ++目錄”>“包含目錄”。
      • 選擇“編輯”,然后添加要測(cè)試的項(xiàng)目的頭目錄。

    在同一項(xiàng)目中添加單元測(cè)試

    • 修改產(chǎn)品代碼項(xiàng)目屬性,以包括單元測(cè)試所需的頭文件和庫(kù)文件。
      • 在解決方案資源管理器中,在被測(cè)項(xiàng)目的快捷菜單中,選擇“屬性”,將打開(kāi)項(xiàng)目“屬性”窗口。
      • 選擇“配置屬性”>“ VC ++目錄”。
      • 編輯包含和庫(kù)目錄:

    目錄 屬性
    包含目錄 $(VCInstallDir)UnitTest\include;$(IncludePath)
    圖書(shū)館目錄 $(VCInstallDir)UnitTest\lib;$(LibraryPath)

    • 添加一個(gè)C ++單元測(cè)試文件:
      • 在解決方案資源管理器中,在項(xiàng)目的快捷菜單中,選擇“添加”>“新建項(xiàng)”>“ C ++單元測(cè)試”。

    編寫(xiě)單元測(cè)試
    在每個(gè)單元測(cè)試代碼文件中,為要測(cè)試的項(xiàng)目的標(biāo)題添加#include語(yǔ)句。將測(cè)試類和方法添加到單元測(cè)試代碼文件中。例如:

    #include "stdafx.h"
    #include "CppUnitTest.h"
    #include "MyProjectUnderTest.h"
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    namespace MyTest
    {
      TEST_CLASS(MyTests)
      {
      public:
          TEST_METHOD(MyTestMethod)
          {
              Assert::AreEqual(MyProject::Multiply(2,3), 6);
          }
      };
    }

    運(yùn)行測(cè)試

    • 在“測(cè)試”菜單上,選擇“ Windows”>“測(cè)試資源管理器”。
    • 如果在窗口中看不到所有測(cè)試,請(qǐng)?jiān)凇敖鉀Q方案資源管理器”中右鍵單擊其節(jié)點(diǎn),然后選擇“生成”或“重新生成”,以構(gòu)建測(cè)試項(xiàng)目。
    • 在測(cè)試資源管理器中,選擇“全部運(yùn)行”,或選擇要運(yùn)行的特定測(cè)試。右鍵單擊測(cè)試以獲取其他選項(xiàng),包括在啟用斷點(diǎn)的調(diào)試模式下運(yùn)行。

    推薦文章:

    在Visual Studio中編寫(xiě)C / C ++的單元測(cè)試


    想要購(gòu)買(mǎi)Visual Studio正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊【咨詢?cè)诰€客服】

    慧聚IT

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    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); })();