如何:部署測試的檔案
在執行測試之前,必須先將測試和應用程式連同其參考的其他組件,一併複製到它們可以執行的位置。 測試通常還需要其他檔案,例如測試資料、組態檔、資料庫和明確載入的組件。 若要讓測試能夠使用這些額外的檔案,您必須指定要部署這些檔案。
測試在何處執行?
Visual Studio 2013 可以在多個位置執行測試:
在組建輸出資料夾中,通常是 <您的專案>\bin\Debug。
在本機測試部署資料夾中,與組建位於同一部電腦上。
在遠端電腦上。 遠端部署可用來測試分散式或 Web 應用程式,以及必須在特定平台上執行的應用程式。 若要進行遠端部署,您必須設定測試控制器和測試代理程式,而且通常您會在實驗室環境中執行測試。 如需遠端部署的詳細資訊,請參閱 如何:使用測試控制器和測試代理程式執行測試。
如何部署本機測試的測試檔案?
以下是最佳方式:
在建置流程中,將檔案複製到建置目標目錄。
如果檔案是某個測試專案所專屬,請將它們當做內容檔加入 Visual Studio 測試專案中。 在 [方案總管] 中選取檔案,並將 [複製到輸出] 屬性設定為 [有更新時才複製]。
否則,定義建置後工作,將檔案複製到組建輸出目錄。 例如:
xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
開啟測試專案的專案屬性。 在 C# 專案中,開啟 [建置事件] 頁面。 在 Visual Basic 專案中,開啟 [編譯] 頁面並選擇 [建置事件]。 將複製命令加入至 [建置後事件] 欄位。
在測試方法或測試類別上使用 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 屬性中指定的所有項目都會在測試回合開始之前複製。
請考慮直接在組建輸出目錄中執行單元測試,如此測試可更快速執行。 在您簽入測試之後,這種方式特別適合組建伺服器。
若要這樣做,請將 *.runsettings 檔案加入方案,包括 <DeploymentEnabled>False</DeploymentEnabled>,並且在 [測試]、[測試設定]功能表中選取該檔案。 在完全未使用 DeploymentItemAttribute 的任何測試回合中,也會產生相同的效果。
不過,如果您使用 *.testsettings 檔案,則無法避免使用部署資料夾,這個檔案是 Web 和負載測試、自動程式碼 UI 測試,以及您將應用程式部署至遠端電腦的任何測試中的必要檔案。
何謂 *.runsettings 檔案?
具有任何名稱和副檔名 '.runsettings' 的檔案。 其可用來為某些目的設定單元測試。 如果您要建立該檔案,請從 使用 .runsettings 檔案設定單元測試 複製範例。 將它放在方案資料夾中,然後使用 [測試>測試設定] 功能表讓它成為使用中檔案。
何時應該使用 *.testsettings 檔案?
*.testsettings 檔案 (亦即,具有任何名稱和副檔名 '.testsettings' 的檔案) 是 *.runsettings 的舊替代項。 如果您要建立該檔案,請使用 [測試>測試設定] 功能表中的功能表項目。 將檔案儲存在方案資料夾中,然後使用 [測試>測試設定] 功能表讓它成為使用中檔案。
請盡可能避免使用 *.testsettings 檔,因為它會使測試回合較為緩慢,而且與協力廠商測試架構不相容。 一般單元測試不需要它。 但是在下列情況下需要它:
您要執行 Web 效能和負載測試或自動程式碼 UI 測試
您要從測試中收集其他診斷資料
如果您使用 *.testsettings 檔案,您的應用程式與測試組件將一律複製到部署資料夾。
您可以在 .testsettings 編輯器的 [部署] 頁面上指定資料檔案和目錄。 它們會在每個測試回合之前複製到部署資料夾。 這個頁面上指定的項目路徑永遠相對於方案目錄,而且一律隨應用程式和測試組件部署至部署資料夾。
如果您要使用絕對路徑或指定不同的目標目錄,請使用 XML 編輯器開啟 .testsettings 檔案,並插入類似下列的片段:
<Deployment>
<DeploymentItem filename="C:\MyTestData\TestData.mdb"
outputDirectory="D:\TestDB\" />
</Deployment>
outputDirectory 可以是部署目錄的絕對或相對路徑。
何時使用不同的部署資料夾?
如果您使用 Visual Studio 執行測試,則會在方案資料夾的 TestResults 下方建立部署資料夾。
如果測試回合中的任何測試方法或類別具有 DeploymentItem 屬性,或者您使用 *.testsettings 檔案,則會使用不同的部署資料夾。
如果使用部署資料夾,則會在執行測試之前將下列檔案和資料夾複製到部署資料夾中:
測試組件檔案。
所有的相依組件。
您使用 DeploymentItemAttribute 或是在 *.testsettings 檔案中明確指定的檔案或目錄
本機測試回合的部署資料夾
檔案何時部署,其部署順序為何?
在測試回合中,要部署的所有檔案都會在任何測試開始之前複製。 測試回合是單一命令或排程的事件啟始的測試批次。 這表示,如果您指定要針對特定測試方法部署的資料檔案,該資料檔案也可供相同回合中執行的其他測試使用。
下列項目會依照顯示的順序複製。 如果項目的名稱相同,則較晚複製的項目將會覆寫較早複製的項目。
使用 DeploymentItemAttribute 所指定的項目
相依性。 例如,應用程式組態檔和相依組件。
在 *.testsettings 檔案中指定的項目 (如果您使用該檔案的話)。
已檢測的二進位檔; 例如,已通過檢測可啟用程式碼涵蓋範圍或 IntelliTrace 的組件。
如果您使用就地檢測,二進位檔會先經過檢測後再複製到部署目錄;否則便會先複製後再進行檢測。 就地檢測是本機執行測試的預設值。
組成測試的檔案。 這些檔案包括單元測試的測試組件、手動測試的文字檔案或 .mht 檔案,或是其他測試類型 (例如一般測試) 的其他檔案類型。
TestResults 目錄中有哪些內容?
測試回合資料夾: TestResults 會針對每個已啟動的測試回合包含一個資料夾。 其名稱包含建立的時間。
如果您在 *.testsettings 檔案中指定設定和清除指令碼,則測試回合資料夾會包含這些指令碼。
Out。 每個測試回合資料夾都包含一個名稱為 Out 的資料夾。 Out 資料夾就是實際的部署資料夾,當測試回合開始時,組件及其他部署檔案都會複製到這個資料夾中。
In。 程式碼涵蓋範圍結果和某些其他測試結果會儲存在名為 In 的資料夾中。