共用方式為


升級 Visual Studio 2010 的單元測試

Visual Studio 2012 包含具有 Visual Studio 2010 SP1 測試專案的測試專案相容性。舉例來說,在您以 Visual Studio 2010 所建立的SP1 測試專案中,您可以使用 Visual Studio 2012 來開啟,而不需要升級。因此,您的小組可以使用 Visual Studio 2010 SP1 和 Visual Studio 2012 來處理相同的測試專案。如需詳細資訊,請參閱Upgrading tests from Visual Studio 2010

Visual Studio 2012 引入幾種單元測試的變更。由於這些變更,了解 Visual Studio Visual Studio 2012在新版和舊版之間的相容性問題是很重要的。在單元測試中的變更中,一個重要的改變是 Visual Studio 2012 包含了更多測試專案範本,包括單元測試專案範本。新的單元測試被加入至新的單元測試專案範本。測試單元也可以被包含在另一個叫做"coded UI 測試專案範"的新測試專案範本中。如需新專案測試範本的詳細資訊,請參閱 從舊版 Visual Studio 升級測試。預設為新單元的測試專案不再包含測試設定檔。藉由排除測試設定檔,為您的測試單元改善效能。為了需相容性的考量,您仍可使用您現有以 Visual Studio 2010 建立的測試專案。不過,基於效能考量,我們建議您刪除測試設定檔,除非您對測試設定檔有其他特殊的需求。例如,如果您在分散式環境進行單元測試或是需要收集特定診斷資料,您可以選擇保留測試設定檔。如果您具有類似需求使用新的單元測試專案範本或自動程式碼 UI 測試專案範本,您可以手動將測試設定檔至這些項目。

注意事項注意事項

現有的單元測試在您的 Visual Studio 2010 SP1 測試專案中會緊密地與 Visual Studio 2010 SP1 和 Visual Studio 2012合作。當包含您單元測試的 Visual Studio 2010 測試專案在 Visual Studio 2012中開啟時,測試專案檔不會變更,反之亦然。

注意事項警告

Visual Studio 2010 無法開啟 C++. C++/CLI 專案目標則 11.0 工具組 (也就是在 Visual Studio 2012中建立的專案)。這項限制適用於所有 C++/CLI 專案,而不只是 C++/CLI 單元測試專案。

注意事項注意事項

您可以從命令列使用 vstest.console.exe來執行新的單元測試。如需使用 vstest.console.exe 的詳細資訊,請參閱 VSTest.Console.exe 命令列選項或執行命令: vstest.console.exe /?。您可以使用 MStest.exe來繼續執行現有的單元測試。如需詳細資訊,請參閱HOW TO:使用 MSTest 從命令列執行自動化測試MSTest.exe 命令列選項

另一個重要變更為新的測試總管。在 Visual Studio 2012中,您所熟悉的舊版 Visual Studio 的某些測試視窗已被取代,例如測試檢視視窗。測試總管是設計來改善合併軟體開發實務單元測試的支援開發人員和小組。如需詳細資訊,請參閱使用測試總管執行單元測試

在 Visual Studio 2010 SP1 和 Visual Studio 2012 的相容性問題

下列是一些會產生的問題,當您在 Visual Studio 2010 SP1 和 Visual Studio 2012間移轉單元測試時:

單元測試功能。

問題

解決方案

測試清單 (.vsmdi 檔)已被 Visual Studio 2012取代。

您無法建立新的測試清單 (.vsmdi 檔案) 或從 Visual Studio 執行測試清單。

提示提示
測試分類與舊版 Microsoft Visual Studio 中的測試清單功能相比,可提供更大的彈性。您可以搭配使用邏輯運算子與測試分類,一起執行來自多個分類的測試,或將執行的測試限制為屬於多個分類的測試。同時,當您建立測試方法時也可輕鬆地加入測試分類,在已建立測試方法之後不需要維護測試清單。透過使用測試分類,您不需要登入和登出維護測試清單的 <solution name>.vsmdi 檔案。如需詳細資訊,請參閱定義測試分類以分組測試

私用存取子已被Visual Studio 2012取代。

在舊版 Visual Studio 中,您可以使用Publicize來指定內部應用程式編譯介面 (API) ,以及建立您在測試可以呼叫的公開對應 API,其會呼叫至您的產品內部 API。您可以使用程式碼產生建立測試的存根,並在存根中產生程式碼的片段。

您無法建立私用存取子。

  • Visual Studio 2010 測試專案中會進行編譯並執行 Visual Studio 2012。建置會包括輸出警告。

  • 如果您仍需要測試內部 API,您有下列選項:

    • 使用 PrivateObject 類別可協助存取您程式碼中的內部和私用 API 。這個可以在 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 組件中被發現。

    • 建立一個可以反映的架構,來反映您的程式碼存取內部或私用的APIs。

    • 如果您嘗試存取的程式碼是內部的,您也許可以存取您的 InternalsVisibleToAttribute API ,而您的測試程式碼是可以存取內部 API 的。

移除測試影響

透過測試總管的 TRX 記錄傳遞共用執行的結果。

您仍然可以從命令列和 Team Build 取得 TRX 記錄。

與原生 C++ 單元測試的程式碼涵蓋範圍

當 C ++. 單元測試失敗時,以及程式碼涵蓋範圍時,沒有錯誤的堆疊追蹤。

解決的方法是執行 C++ 單元測試不需要程式碼涵蓋範圍和取得呼叫堆疊識別問題。

請參閱

概念

Visual Studio11 相容性

使用單元測試驗證程式碼

從舊版 Visual Studio 升級測試

升級 Visual Studio 2010 的自動程式碼 UI 測試