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 Edition 在用于创建测试的文件夹中或在单独的“部署”文件夹中运行测试。有关进行测试运行设置的更多信息,请参见如何:配置测试部署

本节介绍 Visual Studio Team System 2008 Test Edition 在与保存所生成程序集的文件夹不同的文件夹中运行测试的情况。

以这种方式运行测试时,测试和测试代码程序集以及部署项将放在该测试运行独有的测试部署文件夹中。此属性标识文件和目录,这些目录包含要运行的部署测试所使用的文件。测试引擎生成部署项的副本,并根据指定的 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 类,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

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

另请参见

参考

DeploymentItemAttribute 成员

Microsoft.VisualStudio.TestTools.UnitTesting 命名空间

其他资源

如何:配置测试部署