使用測試總管針對現有 C++ 應用程式執行單元測試
建議,在這種情況下,變更現有的應用程式之前,您,確定可以使用單元測試的良好的涵蓋範圍。 這可讓您對於您的變更並未產生 Bug有信心。 如果應用程式尚未建立單元測試,您可以使用本主題中說明的技術加入。 本主題說明如何在 Microsoft Visual Studio 2012為現有的 Visual C++ 程式碼加入單元測試,從決定如何測試程式碼、然後建置、寫入,並在最後執行測試。
決定如何測試程式碼
開啟現有的 C++ 專案,並檢查它決定您要加入單元測試。 您可能會想要使用某些模型工具,協助您在程式碼中的相依性,並協助您了解組件的互動方式。 如需詳細資訊,請參閱顯現程式碼內容及其關聯性使其更容易理解。
建議您拆解應用程式變為更小型的工作。 在每個些微的變更之前,都會保持相同行為方面的撰寫單元測試。 在您進行這項變更之後,這些測試會繼續執行。 例如,在中,如果您想要變更已排序的函式,讓它來藉由姓來排序人員清單而不是依名字,然後您可以撰寫驗證的單元測試所有出現在輸出中的輸入名稱。 在您進行這項變更之後,您可能會想要將新行為加新單元測試。
如果可行,大部分或所有的單元測試應該使用只匯出的函式。 不過,如果您變更整個應用程式的一小部分,則您可能會想要使用沒有匯出函式。 例如,您可能要叫用的內部函式會設定並取得內部變數值的測試。
有幾種方式測試產品代碼,取決於是否公開您想測試的介面。 選擇下列其中一項:
單元測試只會使用從進行測試的程式碼中匯出的函式:
將加入個別的測試專案。 在測試專案中,加入參考到專案中。移至 建立參考程式碼專案中的測試專案程序。
進行測試的程式碼會建立為 .exe 檔案:
將加入個別的測試專案。 連結至輸出目的檔。移至 建立參考程式碼目的檔的測試專案程序。
單元測試必須使用私用函式和資料,然後,進行測試的程式碼可以建置為靜態程式庫:
變更專案,以便編譯為 .lib 檔。 加入參考專案進行測試的個別的測試專案。這個方法會在不同的專案有一個可以讓您測試的優點、使用私用成員,但是,仍然保留測試。 不過,可能不適用於您必須有一個動態連結程式庫 (DLL) 的某些應用程式 (.dll)。
移至 變更受測試程式碼加入至靜態程式庫程序。
單元測試必須使用私用函式和資料,因此,必須建立程式碼做為動態連結程式庫 (DLL):
若要在專案加入與產品程式碼相同的單元測試。移至 將在同一專案的單元測試程序。
建立測試
變更受測試程式碼加入至靜態程式庫
如果您的測試必須使用不是由進行測試的專案和測試專案中匯出的成員會建置成動態程式庫的成員,請考慮將它轉換成靜態程式庫。
在 [方案總管] 中,在專案的捷徑功能表,選取 [內容]。 [專案屬性頁] 視窗便會開啟。
選取 [組態屬性], [一般]。
設定 [組態類型] 至 [靜態程式庫 (.lib)]。
繼續 程序去建立匯出函式的測試專案。
參考從測試專案中的匯出函式。
如果受測的專案匯出要測試的函式,就可以從測試專案加入參考至程式碼專案。
若要建立測試專案
- 在 File功能表中,選取 新增, 專案, Visual C++, 測試, C++ 單元測試專案.
在 [方案總管] 中,在測試專案的捷徑功能表中,選取 [參考]。 [專案屬性頁] 視窗便會開啟。
選取 [一般屬性], [架構和參考],然後選取 [加入新參考] 按鈕。
選取 [專案] ,則專案會被測試。
選擇 [加入] 按鈕。
在測試專案的屬性,請將專案的位置加入至受測地包含目錄。
選取 [組態屬性], [VC++ 目錄], [Include 目錄]。
選取 [編輯],然後將專案的標頭清單進行測試。
移至 撰寫單元測試。。
連結至測試物件或程式庫檔案
如果進行測試的程式碼不匯出您要測試的函式,可以將輸出 .obj 或 .lib 檔案加入至測試專案之間的相依性。
若要建立測試專案
- 在 File功能表中,選取 新增, 專案, Visual C++, 測試, C++ 單元測試專案.
在 [方案總管] 中,在測試專案的捷徑功能表中,選取 [內容]。 [專案屬性頁] 視窗便會開啟。
選取 [組態屬性], [連結器], [輸入], [其他相依性]。
選取 [編輯],並加入 .obj 或 .lib 的檔案名稱。 請不要使用完整路徑名稱。
選取 [組態屬性], [連結器], [一般], [其他程式庫目錄]。
選取 [編輯],並將 .obj 或 .lib 檔案的目錄路徑。 路徑通常在專案建置資料夾內進行測試。
選取 [組態屬性], [VC++ 目錄], [Include 目錄]。
選取 [編輯],然後將專案的標頭清單進行測試。
移至 撰寫單元測試。。
將在同一專案的單元測試
修改產品程式碼專案屬性去包含為了單元測試所需的標題和程式庫檔案。
在 [方案總管] 中,在測試中的專案的捷徑功能表,選取 [內容]。 [專案屬性頁] 視窗便會開啟。
選取 [組態屬性], [VC++ 目錄]。
編譯包含和程式庫目錄:
Include 目錄
$(VCInstallDir)UnitTest\include;$(IncludePath)
程式庫目錄
$(VCInstallDir)UnitTest\lib;$(LibraryPath)
加入一個 C++ 單元測試檔案:
- 在 [方案總管] 中,在專案的捷徑功能表中,選取 [新增], [新增項目],然後選取 [C++ 單元測試]。
移至 撰寫單元測試。。
撰寫單元測試。
在每個單元測試程式碼檔案中,加入專案的標頭檔 #include 陳述式進行測試。
加入測試類別和方法至單元測試程式碼檔案。 例如:
#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); } }; }
如需詳細資訊,請參閱使用測試總管針對機器碼執行單元測試。
執行測試。
在 [檢視] 功能表上,選擇 [其他視窗], [測試總管]。
在[測試總管] 中,選取 [全部執行]。
如需詳細資訊,請參閱快速入門:搭配測試總管進行以測試為導向的開發工作。