DeploymentItemAttribute 類別
指定應該在執行測試之前的組件一起部署的檔案或目錄。 附加這個屬性對測試類別和測試方法。 您可以使用多個執行個體。 這個屬性不會繼承。
繼承階層架構
Object
Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.DeploymentItemAttribute
命名空間: Microsoft.VisualStudio.TestTools.UnitTesting
組件: Microsoft.VisualStudio.QualityTools.UnitTestFramework (在 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 中)
語法
'宣告
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
public sealed class DeploymentItemAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method, AllowMultiple = true)]
public ref class DeploymentItemAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)>]
type DeploymentItemAttribute =
class
inherit Attribute
end
public final class DeploymentItemAttribute extends Attribute
DeploymentItemAttribute 類型會公開下列成員。
建構函式
名稱 | 描述 | |
---|---|---|
DeploymentItemAttribute(String) | 在測試回合開始前,指定要部署的項目。 | |
DeploymentItemAttribute(String, String) | 在測試回合開始前,指定要部署的項目。 |
回頁首
屬性
名稱 | 描述 | |
---|---|---|
OutputDirectory | 取得項目複製目錄的路徑。 | |
Path | 取得要複製的來源檔案或資料夾的路徑。 | |
TypeId | 在衍生類別中實作時,取得這個 Attribute 的唯一識別項。 (繼承自 Attribute)。 |
回頁首
方法
名稱 | 描述 | |
---|---|---|
Equals | 基礎架構。 傳回數值,表示這個執行個體是否等於指定的物件。 (繼承自 Attribute)。 | |
GetHashCode | 傳回這個執行個體的雜湊碼。 (繼承自 Attribute)。 | |
GetType | 取得目前實例 Type 的屬性。 (繼承自 Object)。 | |
IsDefaultAttribute | 在衍生類別中覆寫時,表示這個執行個體的值是否為衍生類別的預設值。 (繼承自 Attribute)。 | |
Match | 在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。 (繼承自 Attribute)。 | |
ToString | 傳回代表目前物件的字串。 (繼承自 Object)。 |
回頁首
明確介面實作
名稱 | 描述 | |
---|---|---|
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | 將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。 (繼承自 Attribute)。 | |
System#Runtime#InteropServices#_Attribute#GetTypeInfo | 擷取物件的型別資訊,可以用來取得介面的型別資訊。 (繼承自 Attribute)。 | |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | 擷取物件提供的型別資訊介面數目 (0 或 1)。 (繼承自 Attribute)。 | |
System#Runtime#InteropServices#_Attribute#Invoke | 提供物件所公開的屬性和方法的存取權。 (繼承自 Attribute)。 |
回頁首
備註
Visual Studio 2012 執行測試可能會在您建置它們的資料夾或在對測試回合特有的個別的部署資料夾。 如果使用部署資料夾,測試引擎會建立部署資料夾和複製到它包含測試程式碼、應用程式和其參考的所有組件的組件。
但是,有些測試需要額外的檔案,例如測試資料、組態檔、資料庫或明確載入的組件。 若要讓這些檔案是在測試期間,您必須指定要與測試組件一起複製它們。 這最好的方式:
在建置程序中,將檔案複製到建置目標目錄。
如果它們是針對測試專案,將它們當做內容檔在 Visual Studio 中測試專案。 選取它們在方案總管中將 [複製到輸出] 屬性設定為 [有更新時才複製]。
否則,請定義建置工作將檔案複製到建置輸出目錄。 例如:
xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
開啟測試專案的專案屬性。 在 C# 專案中,開啟 [建置事件] 頁面。 在 Visual Basic 專案,請開啟 [編譯] 頁面並選取 [建置事件]。 將複製命令加入至 [建置後事件] 欄位。
您可以在測試方法或測試類別的 DeploymentItemAttribute 指定應該從組建輸出資料夾複製到部署目錄中的檔案和資料夾。
執行單元測試直接在組建加入該輸出目錄,因此,測試執行更快速。 在您簽入測試之後,這特別適用於組建伺服器。 這樣做,將 .runsettings 檔案加入至方案,其中包含 <DeploymentEnabled>False</DeploymentEnabled>並在 [個測試] 中選取檔案, [ [測試設定] 功能表。 相同的效果。DeploymentItemAttribute 根本不使用的任何測試回合結果。
不過,因此,如果您想要在失敗的執行之後,會檢查資料檔案您可能不想這麼做。
您不能避免使用,如果的部署資料夾中使用 .testsettings 檔案,針對所需的 Web 和負載測試時,自動程式碼 UI 測試和部署應用程式至遠端電腦的任何測試。
在測試回合中,在要執行之測試的所有項目部署,所有測試開始之前。
如需詳細資訊,請參閱如何:部署測試的檔案。
DeploymentItemAttribute 具有兩個參數:
來源項目路徑 是相對於建置輸出資料夾。 它可以是檔案或資料夾。 在建置程序中,為了避免在您的專案結構的相依性,請將專案建置輸出目錄。 使用部署項目屬性部署它從該處。
(選擇性) 目標目錄路徑。 必須是資料夾,因此,它是相對於部署目錄。 如果資料夾不存在,則會建立。 預設值為部署目錄。
使用 DeploymentItem,您無法將檔案名稱。
下列範例會示範 DeploymentItemAttribute的用法:
[DeploymentItem("file1.xml")]
複製 file1.xml 從建置輸出目錄加入至部署目錄。[DeploymentItem(@"Testfiles\")]
複製所有檔案,並在 Testfiles 資料夾的資料夾從建置輸出資料夾到部署資料夾。 子資料夾在部署資料夾複製。[DeploymentItem("file2.xml", "DataFiles")]
若要在部署資料夾的資料夾名稱 DataFiles,並複製到建置輸出資料夾中 file2.xml 至資料檔案。注意事項 如果您使用第二個參數,它必須是資料夾,而非檔案的路徑。如果資料夾不存在,則會建立。使用 DeploymentItem,您無法變更檔案的名稱。
[DeploymentItem(@"Resources\file2.xml", "DataFiles")]
如果不存在,會在部署資料夾的資料夾名稱 DataFiles。 複製資源資料夾的 file2.xml 在建置輸出資料夾下的資料檔案。 請注意資源資料夾在目的資料夾不會重複。[DeploymentItem(@"TestFiles\", "TestFiles")]
複製 TestFiles 內容到部署資料夾的子資料夾。 子資料夾複製到目的下。[DeploymentItem(@"..\..\file1.xml")] (不建議)。
將項目從專案目錄。 這個範例假設輸出目錄,例如,在 Bin \ Debug 的典型的專案結構。而不是依賴這類專案結構,將檔案的 [複製到輸出] 屬性。 部署檔案從建置輸出目錄。
[DeploymentItem(@"C:\MyDataFiles\")]
複製 MyDataFiles 資料夾的內容到部署資料夾。(如果您使用 .testsettings 檔) [DeploymentItem("%myDir%\myFile.txt")]
部署檔案 myFile.txt,如果該檔案已存在於 %myDir% 解析的目錄。
如需如何使用屬性的詳細資訊,請參閱使用屬性擴充中繼資料。
範例
下列測試讀取名為「test*.xml」檔案。 使用 DeploymentItemAttribute,若要讓檔案可供測試和應用程式,則會識別。 測試方法在目前測試應用程式驗證檔案是否存在於部署目錄下,。
using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace DeploymentTest
{
[TestClass]
public class UnitTest1
{
[TestMethod]
// Copy files from build directory:
[DeploymentItem("test1.xml")]
[DeploymentItem("test2.xml", "Data")]
// Copy files from Resources subdirectory:
[DeploymentItem("Resources\\test3.xml")]
[DeploymentItem("Resources\\test4.xml", "Data")]
public void ConstructorTest()
{
// Verify that the files exist in the deployment directory
Assert.IsTrue(File.Exists("test1.xml"));
Assert.IsTrue(File.Exists("Data\\test2.xml"));
Assert.IsTrue(File.Exists("test3.xml"));
Assert.IsTrue(File.Exists("Data\\test4.xml"));
// Now test the application ...
}
}
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Namespace DeploymentTest
<TestClass()> _
Public Class UnitTest1
<TestMethod()> _
<DeploymentItem("test1.xml")> _
<DeploymentItem("test2.xml", "Data")> _
<DeploymentItem("Resources\test3.xml")> _
<DeploymentItem("Resources\test4.xml", "Data")> _
Sub ConstructorTest()
Assert.IsTrue(File.Exists("test1.xml"))
Assert.IsTrue(File.Exists("Data\test2.xml"))
Assert.IsTrue(File.Exists("test3.xml"))
Assert.IsTrue(File.Exists("Data\test4.xml"))
' Now test the application ...
End Sub
End Class
End Namespace
執行緒安全
這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。不保證任何執行個體成員是安全執行緒。