共用方式為


單元測試和 C++

更新:2007 年 11 月

您可以使用 Visual C# 和 Visual Basic 中的單元測試。

注意事項:

在 Visual C# 和 Visual Basic 中,泛型型別和泛型方法之一般測試的產生會有一些限制。如需詳細資訊,請參閱單元測試與泛型

也可以根據本主題中所描述的細節,使用 Visual C++ 中的單元測試。

使用 Visual C++ 及單元測試的方式會依 Visual C++ 在您的方案中有何作用而有所不同,可能會有下列情況:

  • 您使用單元測試來測試以 Visual C++ 撰寫的程式碼。如需詳細資訊,請參閱 Visual C++ 實際執行程式碼。

  • 您的測試專案包含以 Visual C++ 撰寫的單元測試。如需詳細資訊,請參閱測試專案和 Visual C++。

  • 您打算透過以 Visual C++ 撰寫的程式碼自動產生單元測試。如需詳細資訊,請參閱程式碼產生和 Visual C++。

Visual C++ 實際執行程式碼

請注意下列有關您要測試的程式碼事項,該程式碼在這裡稱為「實際執行」程式碼。

  • Unmanaged - 如果您的實際執行程式碼是 Unmanaged,那麼程式碼就必須可以透過靜態程式庫、.obj 檔或 DLL 進入點 (Entry Point) 呼叫。內嵌於可執行檔或 DLL 的類別方法將無法運作,因為 Unmanaged Visual C++ 並未提供執行階段探索機制和反映 (Reflection)。因此,只有傳統的原生繫結機制可以運作。

  • 混合 - 混合專案是使用 /clr 編譯器選項的專案。如果您的實際執行程式碼屬於 Mixed,但不是可執行檔,則可以呼叫並測試程式碼中任何可呼叫的方法。

  • 安全或純粹 - 如果您的實際執行程式碼為安全或純粹的,則可以呼叫和測試可執行檔或 DLL 中任何可呼叫的組件方法。

測試專案和 Visual C++

您的測試專案會依您對專案設定的編譯器選項發揮不同的能力。如需詳細資訊,請參閱編譯器選項/clr (Common Language Runtime 編譯)。下列章節說明不同編譯器選項設定的能力。

Unmanaged

測試專案不能使用 Unmanaged、機器碼或 Visual C++ 做為程式設計語言。

混合

混合專案是使用 /clr 編譯器選項的專案。這種測試專案會提供測試下列實際執行程式碼的能力:

  • 靜態原生程式庫

  • 原生 DLL 進入點

  • 獨立 .obj 檔

  • 具有可呼叫之方法的混合模式 DLL 組件 - 這並不包含可執行檔,因為它們含有 Unmanaged 程式碼,並且 Unmanaged 可執行程式碼通常不會重新啟用基底位址 (Base Address)。

  • 任何可呼叫之 Managed 方法 - 這是以 /clr:pure 或 /clr:safe 編譯器選項編譯的程式碼。

安全或純粹

如果您將 /clr:pure 或 /clr:safe 編譯器選項與測試專案搭配使用,它會提供測試任何可呼叫之 Managed 方法的能力。這是指以 /clr、/clr:pure 或 /clr:safe 編譯器選項編譯的實際執行程式碼。

程式碼產生和 Visual C++

您可以將單元測試產生至 Visual C++ 測試專案中。您可以從 Visual C++ 實際執行程式碼專案產生這些測試。請注意以下各點:

  • 實際執行程式碼專案 - 如果您的實際執行程式碼是以 Visual C++ 撰寫,那麼只有在產品使用 /clr:safe 編譯器選項時,您才可以產生單元測試。

  • 測試專案 - 程式碼產生可以在任何 Visual C++ 測試專案類型中產生單元測試:混合、安全和純粹。產生的預設專案類型為 /clr:safe 專案。如果您想要將專案變更為 /clr 或 /clr:pure,您可以使用 Visual C++ 編譯器選項隨時變更。如需詳細資訊,請參閱 /clr (Common Language Runtime 編譯)

請參閱

工作

HOW TO:撰寫單元測試

概念

單元測試與泛型

參考

編譯器選項