DeploymentItemAttribute 類別
更新:2007 年 11 月
用以指定部署項目,例如每次測試時要部署的檔案或目錄。此類別無法被繼承。
命名空間: Microsoft.VisualStudio.TestTools.UnitTesting
組件: Microsoft.VisualStudio.SmartDevice.UnitTestFramework (在 Microsoft.VisualStudio.SmartDevice.UnitTestFramework.dll 中)
語法
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
Inherits Attribute
Dim instance As DeploymentItemAttribute
[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
public final class DeploymentItemAttribute extends Attribute
備註
根據您的測試回合組態設定而定,Visual Studio Team System 2008 Test 版會在建立測試所在的資料夾或是在不同的 "deployment" 資料夾中執行測試。如需測試回合設定的詳細資訊,請參閱 HOW TO:設定測試部署。
本章節討論 Visual Studio Team System 2008 Test 版在包含已建置組件之資料夾以外的資料夾中執行測試的情況。
當使用這種方式執行測試時,此測試、受測試程式碼組件和部署項目都會放置在測試部署資料夾中,而且此資料夾對此測試回合而言是唯一的。這個屬性識別要執行之部署測試所使用的檔案,以及包含這些檔案的目錄。測試引擎會產生一份部署項目的複本,並將這些部署項目放置於 OutputDirectory 指定之測試部署目錄或是預設目錄中。如需其他資訊,請參閱測試部署。
這個屬性可以在測試方法或測試類別上指定。但是,這個屬性不是由衍生類別所繼承。
這個屬性可以存在多個執行個體以指定一個以上的項目。項目路徑可以是相對路徑或絕對路徑。相對路徑是相對於 .testrunconfig 檔中的 RelativePathRoot 設定。
下列範例示範 DeploymentItemAttribute 的不同使用方式。
[DeploymentItem("file1.xml")]:會將位於 RelativeRootPath 中名為 file1.xml 的項目,此檔是部署到部署根目錄。
[DeploymentItem("file2.xml", "DataFiles")]:會將位於 RelativeRootPath 中名為 file2.xml 的項目,此檔是部署到部署根目錄的 DataFiles 子目錄。
[DeploymentItem("C:\\MyDataFiles\\")]:會針對 MyDataFiles 目錄中的所有項目和目錄進行部署,這個做法將不會在部署目錄底下建立 MyDataFiles 目錄。MyDataFiles 內的所有檔案和目錄都將會部署到部署根目錄。若要複製整個 MyDataFiles 目錄結構,您必須將 MyDataFiles 指定為輸出目錄。
[DeploymentItem("%myDir%\myFile.txt")]:如果 myFile.txt 檔存在 %myDir% 解析而成的目標目錄中,便部署此檔案。
如需如何使用屬性的詳細資訊,請參閱使用屬性擴充中繼資料。
範例
下列類別會建立供測試方法使用的檔案。
using System;
using System.IO;
namespace CarMaker
{
public class Car
{
private static string make = "myMake";
private static string model = "myModel";
public static void CarInfo()
{
using (StreamWriter sw = new StreamWriter("testFile1.txt"))
{
sw.WriteLine(make);
sw.WriteLine(model);
}
}
}
}
Imports System
Imports System.IO
Namespace CarMaker
Public Class Car
Private Shared make As String = "myMake"
Private Shared model As String = "myModel"
Public Shared Sub CarInfo()
Dim sw As New StreamWriter("testFile1.txt")
Try
sw.WriteLine(make)
sw.WriteLine(model)
Finally
sw.Close()
End Try
End Sub
End Class
End Namespace
下列測試類別所包含的測試方法會具現化 Car 類別,此類別將建立一個名為 testFile1.txt 的檔案。這個檔案將依照 DeploymentItemAttribute 中的設定進行部署。接著,測試方法將會測試該檔是否存在於與測試組件相同的目錄。
using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using CarMaker;
namespace DeploymentTest
{
[TestClass]
public class UnitTest1
{
[TestMethod()]
[DeploymentItem("testFile1.txt")]
public void ConstructorTest()
{
// Create the file to deploy
Car.CarInfo();
string file = "testFile1.txt";
// Check if the created file exists in the deployment directory
Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
" did not get deployed");
}
}
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports MyVBProject.CarMaker
Namespace DeploymentTest
<TestClass()> _
Public Class UnitTest1
<TestMethod()> _
<DeploymentItem("testFile1.txt")> _
Sub ConstructorTest()
Car.CarInfo()
Dim file As String = "testFile1.txt"
Assert.IsTrue(IO.File.Exists(file), "deployment failed: " + file + _
" did not get deployed")
End Sub
End Class
End Namespace
繼承階層架構
System.Object
System.Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.DeploymentItemAttribute
執行緒安全
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。並非所有的執行個體成員都是安全執行緒。
請參閱
參考
Microsoft.VisualStudio.TestTools.UnitTesting 命名空間