DeploymentItemAttribute - класс
Обновлен: Ноябрь 2007
Используется для задания элементов развертывания, таких, как файлы или каталоги, при потестовом развертывании. Этот класс не наследуется.
Пространство имен: 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 или в каталоге по умолчанию. Дополнительные сведения см. в разделе Развертывание тестов.
Этот атрибут можно указать в методе теста или в тестовом классе. Однако этот атрибут не наследуется производным классом.
В методе может быть несколько экземпляров данного атрибута для задания нескольких элементов. Путь элемента может быть как относительным, так и абсолютным. Относительные пути Relative задаются относительно параметра RelativePathRoot, который находится в файле с расширением TESTRUNCONFIG.
В следующих примерах демонстрируются различные способы применения DeploymentItemAttribute.
[DeploymentItem("file1.xml")] Разворачивает элемент с именем file1.xml и расположением согласно параметру RelativeRootPath. Этот файл разворачивается в корневом каталоге развертывания.
[DeploymentItem("file2.xml", "DataFiles")] Разворачивает элемент с именем file2.xml и расположением согласно параметру RelativeRootPath. Этот файл разворачивается в подкаталоге 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
Потокобезопасность
Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
См. также
Ссылки
DeploymentItemAttribute - члены
Microsoft.VisualStudio.TestTools.UnitTesting - пространство имен