Поделиться через


DeploymentItemAttribute - класс

Укажите файл или каталог, развертывать вместе с сборками перед запуском теста.Вложите этот атрибут в тестовый класс или метод теста.Экземпляры можно выполнить несколько операций использования.Этот атрибут не наследуется.

Иерархия наследования

System.Object
  System.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.)

В начало страницы

Явные реализации интерфейса

  Имя Описание
Явная реализация интерфейсаЗакрытый метод _Attribute.GetIDsOfNames Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute.)
Явная реализация интерфейсаЗакрытый метод _Attribute.GetTypeInfo Возвращает сведения о типе объекта, которые могут использоваться для получения сведений о типе интерфейса. (Унаследовано от Attribute.)
Явная реализация интерфейсаЗакрытый метод _Attribute.GetTypeInfoCount Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute.)
Явная реализация интерфейсаЗакрытый метод _Attribute.Invoke Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от Attribute.)

В начало страницы

Заметки

Visual Studio 2012 выполняет тесты либо в папке, в которой для построенной или их в отдельной папке развертывания, уникально в тестовый запуск.Если папка развертывания используется, обработчик тестов создается папка развертывания и скопируйте ее в сборки содержащего тестовый код, приложения и все сборки, на которые они ссылаются.

Однако некоторые тесты требуют дополнительных файлов, таких как тестовые данные, файлы конфигурации, базы данных или явно загруженных сборок.Чтобы сделать эти файлы доступными во время теста, необходимо определить, какие они должны быть скопированы вместе с тестовых сборок.Здесь наилучшей способ сделать это:

  1. Скопируйте файлы в каталог целевого объекта построения в процессе построения.

    • Если они относятся к одному тестовый проект, включить их в качестве файлов содержимого в тестовом проекте Visual Studio.Выделите их в обозревателе решений, а значение свойства Скопируйте для вывода на Копировать более позднюю версию.

    • В противном случае укажите задачи после построения для копирования файлов в выходной каталог построения.Например:

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      Открытие свойства проекта для тестового проекта.В проекте C-#, откройте страницу События построения.В проекте Visual Basic, откройте страницу Компилировать и выберите команду События построения.Добавьте команду копирования в поле Событие после построения.

  2. Используйте DeploymentItemAttribute в методах теста или тестовых классов, чтобы определить файлы и папки, которые должны быть скопированы в выходной каталог построения в каталог развертывания.

  3. Рассмотрит выполнить модульные тесты непосредственно в выходном каталоге построения, чтобы тест быстрее.Это особенно полезно на сервере построения после вернули тестов.Для этого добавьте файл .runsettings в решение, например <DeploymentEnabled>False</DeploymentEnabled>, а также выбирает файл в меню Тест выберите Параметры тестирования.Тот же эффект возникает в любом тестового запуска, в котором DeploymentItemAttribute не используется вообще.

    Однако может потребоваться использование не задачи, если это требуется возможность проверить файлы данных после неудачных тестов.

    Нельзя исключить использовать папку развертывания, если используется файл .testsettings, который необходим для Интернета и нагрузочные тесты, закодированных тестов пользовательского интерфейса, и любой тест, в котором выполняется развертывание приложения к удаленным компьютерам.

В тестовом запуске, развертываются все элементы в тестах, будет выполняться до любого тестового запуска.

Для получения дополнительной информации см. Практическое руководство. Развертывание файлов для тестов.

DeploymentItemAttribute имеет 2 параметра:

  • Путь к элементу источника относительно папку назначения.Это может быть файлом или папкой.Чтобы избежать зависимости в структуре проекта, перемещение элемента в выходной каталог построения в процессе построения.Используйте атрибут элемента развертывания для развертывания его оттуда.

  • (Необязательно) Путь целевого каталога должно быть папкой, и она относительно каталога развертывания.Если папка не существует, она будет создана.Значение по умолчанию каталог развертывания.

    Невозможно изменить имя файла с помощью DeploymentItem.

Следующие примеры демонстрируют потребление DeploymentItemAttribute:

  • [DeploymentItem("file1.xml")]
    Копирует file1.xml из выходной папки построения в каталог развертывания.

  • [DeploymentItem(@"Testfiles\")]
    Копирует все файлы и папки в папке Testfiles из выходной папки построения в папке развертывания.Вложенные папки реплицируются в папке развертывания.

  • [DeploymentItem("file2.xml", "DataFiles")]
    Создает папку с именем Архивом Данных в папке развертывания и копирует file2.xml из выходной папки построения в архивам данных.

    ПримечаниеПримечание

    Если используется второй параметр, оно должно всегда быть путь папки, не файла.Если папка не существует, она будет создана.Невозможно изменить имя файла с помощью DeploymentItem.

  • [DeploymentItem(@"Resources\file2.xml", "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

Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

См. также

Ссылки

Microsoft.VisualStudio.TestTools.UnitTesting - пространство имен