共用方式為


如何:部署測試的檔案

在執行測試之前,必須先將測試和應用程式連同其參考的其他組件,一併複製到它們可以執行的位置。 測試通常還需要其他檔案,例如測試資料、組態檔、資料庫和明確載入的組件。 若要讓測試能夠使用這些額外的檔案,您必須指定要部署這些檔案。

測試在何處執行?

Visual Studio 2013 可以在多個位置執行測試:

如何部署本機測試的測試檔案?

以下是最佳方式:

  1. 在建置流程中,將檔案複製到建置目標目錄。

    • 如果檔案是某個測試專案所專屬,請將它們當做內容檔加入 Visual Studio 測試專案中。 在 [方案總管] 中選取檔案,並將 [複製到輸出] 屬性設定為 [有更新時才複製]。

    • 否則,定義建置後工作,將檔案複製到組建輸出目錄。 例如:

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      開啟測試專案的專案屬性。 在 C# 專案中,開啟 [建置事件] 頁面。 在 Visual Basic 專案中,開啟 [編譯] 頁面並選擇 [建置事件]。 將複製命令加入至 [建置後事件] 欄位。

  2. 在測試方法或測試類別上使用 DeploymentItemAttribute,指定應該從組建輸出目錄複製到部署目錄中的檔案和資料夾。

    [TestClass]
    class TestClass1
    {
      [TestMethod]
      [DeploymentItem("source", "targetFolder")]
      public void Test1()
      {
        string testData = System.IO.File.ReadAllText(@"targetFolder\source");
        ...
    } }
    
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("source", "targetFolder")> _
        Sub TestMethod1()
            Dim testData As String = _
                System.IO.File.ReadAllText(@"targetFolder\source")
        ...
        End Sub
    End Class
    
    • 來源是要複製的檔案或目錄。 路徑可以是組建輸出目錄的絕對或相對路徑。

    • targetFolder 是選擇項。 它是原始程式檔或目錄內容將複製到其中的目錄。 路徑可以是部署目錄的絕對或相對路徑。 預設值為 ".",也就是部署目錄。

      注意事項注意事項

      targetFolder 一律為目錄,絕不是檔案路徑。您無法使用 DeploymentItem 變更檔案的名稱。

    您可以依需要多次使用屬性,也可以將它套用至測試方法或測試類別。

    當您選取一組要執行的測試時,其 DeploymentItem 屬性中指定的所有項目都會在測試回合開始之前複製。

  3. 請考慮直接在組建輸出目錄中執行單元測試,如此測試可更快速執行。 在您簽入測試之後,這種方式特別適合組建伺服器。

    若要這樣做,請將 *.runsettings 檔案加入方案,包括 <DeploymentEnabled>False</DeploymentEnabled>,並且在 [測試]、[測試設定]功能表中選取該檔案。 在完全未使用 DeploymentItemAttribute 的任何測試回合中,也會產生相同的效果。

    不過,如果您使用 *.testsettings 檔案,則無法避免使用部署資料夾,這個檔案是 Web 和負載測試、自動程式碼 UI 測試,以及您將應用程式部署至遠端電腦的任何測試中的必要檔案。

何謂 *.runsettings 檔案?

具有任何名稱和副檔名 '.runsettings' 的檔案。 其可用來為某些目的設定單元測試。 如果您要建立該檔案,請從 使用 .runsettings 檔案設定單元測試 複製範例。 將它放在方案資料夾中,然後使用 [測試>測試設定] 功能表讓它成為使用中檔案。

何時應該使用 *.testsettings 檔案?

*.testsettings 檔案 (亦即,具有任何名稱和副檔名 '.testsettings' 的檔案) 是 *.runsettings 的舊替代項。 如果您要建立該檔案,請使用 [測試>測試設定] 功能表中的功能表項目。 將檔案儲存在方案資料夾中,然後使用 [測試>測試設定] 功能表讓它成為使用中檔案。

請盡可能避免使用 *.testsettings 檔,因為它會使測試回合較為緩慢,而且與協力廠商測試架構不相容。 一般單元測試不需要它。 但是在下列情況下需要它:

如果您使用 *.testsettings 檔案,您的應用程式與測試組件將一律複製到部署資料夾。

您可以在 .testsettings 編輯器的 [部署] 頁面上指定資料檔案和目錄。 它們會在每個測試回合之前複製到部署資料夾。 這個頁面上指定的項目路徑永遠相對於方案目錄,而且一律隨應用程式和測試組件部署至部署資料夾。

如果您要使用絕對路徑或指定不同的目標目錄,請使用 XML 編輯器開啟 .testsettings 檔案,並插入類似下列的片段:

<Deployment>
  <DeploymentItem filename="C:\MyTestData\TestData.mdb"
        outputDirectory="D:\TestDB\" />
</Deployment>

outputDirectory 可以是部署目錄的絕對或相對路徑。

何時使用不同的部署資料夾?

如果您使用 Visual Studio 執行測試,則會在方案資料夾的 TestResults 下方建立部署資料夾。

如果測試回合中的任何測試方法或類別具有 DeploymentItem 屬性,或者您使用 *.testsettings 檔案,則會使用不同的部署資料夾。

如果使用部署資料夾,則會在執行測試之前將下列檔案和資料夾複製到部署資料夾中:

本機測試回合的部署資料夾

測試用的本機部署資料夾

檔案何時部署,其部署順序為何?

在測試回合中,要部署的所有檔案都會在任何測試開始之前複製。 測試回合是單一命令或排程的事件啟始的測試批次。 這表示,如果您指定要針對特定測試方法部署的資料檔案,該資料檔案也可供相同回合中執行的其他測試使用。

下列項目會依照顯示的順序複製。 如果項目的名稱相同,則較晚複製的項目將會覆寫較早複製的項目。

  1. 使用 DeploymentItemAttribute 所指定的項目

  2. 相依性。 例如,應用程式組態檔和相依組件。

  3. *.testsettings 檔案中指定的項目 (如果您使用該檔案的話)。

  4. 已檢測的二進位檔; 例如,已通過檢測可啟用程式碼涵蓋範圍或 IntelliTrace 的組件。

    如果您使用就地檢測,二進位檔會先經過檢測後再複製到部署目錄;否則便會先複製後再進行檢測。 就地檢測是本機執行測試的預設值。

  5. 組成測試的檔案。 這些檔案包括單元測試的測試組件、手動測試的文字檔案或 .mht 檔案,或是其他測試類型 (例如一般測試) 的其他檔案類型。

TestResults 目錄中有哪些內容?

  • 測試回合資料夾: TestResults 會針對每個已啟動的測試回合包含一個資料夾。 其名稱包含建立的時間。

    如果您在 *.testsettings 檔案中指定設定和清除指令碼,則測試回合資料夾會包含這些指令碼。

  • Out。 每個測試回合資料夾都包含一個名稱為 Out 的資料夾。 Out 資料夾就是實際的部署資料夾,當測試回合開始時,組件及其他部署檔案都會複製到這個資料夾中。

  • In。 程式碼涵蓋範圍結果和某些其他測試結果會儲存在名為 In 的資料夾中。

請參閱

參考

DeploymentItemAttribute

概念

檢測及重新簽署組件

其他資源

指定 Visual Studio 測試的測試設定