DeploymentItem 元数据
DeploymentItem 元数据标识测试在执行测试期间使用的文件和文件夹的文件和文件夹依赖项,以便 Taef 能够识别这些文件和文件夹并将其适当复制 (例如,在 跨计算机执行方案中,Taef 会将 DeploymentItem 属性标识的文件部署到指定的测试计算机) 。
Taef DeploymentItem 实现与 VSTS 中的 DeploymentItemAttribute 类 中的实现非常相似。
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 旁边的文件夹中的项部署到测试 dll 目录。 此配置仅适用于跨计算机方案。
[DeploymentItem("file2.xml", "DataFiles")]
将位于测试 dll 旁边的名为 file2.xml 的项部署到测试 dll 目录中创建的 DataFiles 子目录。
[DeploymentItem("C:\\\\MyDataFiles\\\\MyDataFiles2\\\\")]
部署在 C:\\MyDataFiles\\MyDataFiles2\\ 目录中找到的所有项和目录。 此配置不会在部署目录下创建 MyDataFiles\MyDataFiles2 目录。 MyDataFiles 中的所有文件和目录都将部署到测试 dll 目录。 若要复制整个 MyDataFiles\MyDataFiles2 目录结构,必须将 MyDataFiles\MyDataFiles2 指定为输出目录。
[DeploymentItem("%myDir%\\myFile.txt")]
如果文件存在于 %myDir% 解析到的目录中,则部署该文件myFile.txt。 如果 TAEF 无法解析环境变量,则会引发错误。
托管测试
DeploymentItem (又名 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>