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


Метаданные DeploymentItem

Метаданные DeploymentItem идентифицируют зависимости файлов и папок для файлов и папок, которые используются тестами во время выполнения тестов, чтобы Taef мог идентифицировать их и скопировать их соответствующим образом (например, в сценарии выполнения на нескольких компьютерах Taef развернет файлы, определенные свойством DeploymentItem , на указанном тестовом компьютере).

Реализация Taef DeploymentItem очень похожа на реализацию класса DeploymentItemAttribute в VSTS.

Метаданные DeploymentItem можно применить на уровне сборки, класса или теста. Элементы, указанные в метаданных DeploymentItem, будут развернуты при выполнении соответствующей установки (сборка, тестовый класс или тест). Если метаданные DeploymentItem указывают зависимость (например, файл) и эта зависимость уже существует в месте назначения, TAEF выполняет сравнение CRC и копирует файл только в том случае, если он был изменен. Если метаданные DeploymentItem указывают зависимость и ее не удается найти, регистрируется ошибка, которая завершится сбоем теста (или все тесты класса или сборки соответственно). TAEF развертывает файлы только один раз для каждой сборки, класса или теста, то есть развертывание не выполняется при каждом расширении сборки, класса или теста, если они управляются данными.

Синтаксис

[DeploymentItem("FileOrFolderToDeploy", "DestinationFolder")]

Где FileOrFolderToDeploy— это путь к файлу или папке относительно каталога, в котором находится тестовая библиотека DLL. Если FileOrFolderToDeploy является папкой, все ее содержимое копируется; однако сама папка не создается. Если в разделе FileOrFolderToDeploy есть иерархия папок, Taef будет рекурсивно копировать все эти каталоги, сохраняя их иерархию каталогов.

DestinationFolder — это путь к папке относительно каталога, в котором находится тестовая библиотека DLL и где копируются элементы развертывания. Путь DestinationFolder можно указать с помощью . нотация (например, .. \MyFiles).

Чтобы выполнить развертывание в папке, в которой находится тестовая библиотека DLL, можно опустить DestinationFolder.

[DeploymentItem("FileOrFolderToDeploy")]

Поддерживаются несколько частей свойства . Пример:

[TestClass]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public class UnitTest1
{
    ...
}

Примеры

[DeploymentItem("file1.xml")]  

Теги file1.xml, расположенные рядом с тестовой библиотекой DLL в качестве зависимости. Эти метаданные можно интерпретировать как то, что система развертывает элемент с именем file1.xml, расположенный в папке рядом с тестовой библиотекой DLL, в каталог test DLL. Эта конфигурация полезна только для сценариев на нескольких компьютерах.

[DeploymentItem("file2.xml", "DataFiles")]

Развертывает элемент с именем file2.xml, расположенный рядом с тестовой библиотекой DLL, в созданный подкаталог DataFiles в каталоге тестовой библиотеки DLL.

[DeploymentItem("C:\\\\MyDataFiles\\\\MyDataFiles2\\\\")]  

Развертывает все элементы и каталоги, находящиеся в каталоге C:\\MyDataFiles\\MyDataFiles2\\. Эта конфигурация не создает каталог MyDataFiles\MyDataFiles2 в каталоге развертывания. Все файлы и каталоги в MyDataFiles будут развернуты для тестирования каталога DLL. Чтобы скопировать всю структуру каталогов MyDataFiles\MyDataFiles2, необходимо указать MyDataFiles\MyDataFiles2 в качестве выходного каталога.

[DeploymentItem("%myDir%\\myFile.txt")]

Развертывает файл myFile.txt, если он существует в каталоге, в который разрешается %myDir%. Если TAEF не удается разрешить переменную среды, возникает ошибка.

Управляемые тесты

Атрибут DeploymentItem (aka DeploymentItemAttribute) можно применить к методу теста (декорированному атрибутом [TestMethod]), классу теста (декорированному атрибутом [TestClass]) или тестовой сборке. Однако так как VSTS не поддерживает это свойство на уровне сборки, чтобы применить это свойство на уровне сборки, необходимо применить его к установке сборки (декорирован атрибутом AssemblyInitialize):

[AssemblyInitialize]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public  static AssemblySetup(TestContext testContext)
{
    ...
}

Собственные тесты

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

BEGIN_TEST_CLASS(TestClassExample)
    TEST_CLASS_PROPERTY(L"DeploymentItem", L"C:\\Dependencies\\>Dependencies")
END_TEST_CLASS()

Тесты скриптов

Для тестов скриптов формат свойства совпадает с форматом собственных тестов:

<method name="TestOne">
    <TestMethodProperty name="DeploymentItem" value="C:\\Dependencies\\>Dependencies"/>
</method>