DeploymentItem 메타데이터

DeploymentItem 메타데이터는 테스트 실행 중에 테스트에서 사용되는 파일 및 폴더에 대한 파일 및 폴더 종속성을 식별하여 Taef가 이를 식별하고 적절하게 복사할 수 있도록 합니다(예: 컴퓨터 간 실행 시나리오에서 Taef는 DeploymentItem 속성으로 식별된 파일을 지정된 테스트 머신에 배포합니다).

Taef DeploymentItem 구현은 VSTS의 DeploymentItemAttribute 클래스 에 있는 것과 매우 유사합니다.

DeploymentItem 메타데이터는 어셈블리, 클래스 또는 테스트 수준에서 적용할 수 있습니다. DeploymentItem 메타데이터로 지정된 항목은 시간 특파원(어셈블리, 테스트 클래스 또는 테스트) 설치 실행 시 배포됩니다. DeploymentItem 메타데이터가 종속성(예: 파일)을 지정하고 해당 종속성이 대상에 이미 있는 경우 TAEF는 CRC 비교를 수행하고 변경된 경우에만 파일을 복사합니다. DeploymentItem 메타데이터가 종속성을 지정하고 종속성을 찾을 수 없는 경우 테스트에 실패하는 오류(또는 그에 따라 모든 테스트 클래스 또는 어셈블리 테스트)가 기록됩니다. TAEF는 어셈블리, 클래스 또는 테스트당 한 번만 파일을 배포합니다. 즉, 데이터 기반인 경우 모든 어셈블리, 클래스 또는 테스트 확장에서 배포가 발생하지 않습니다.

Syntax

[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")]  

테스트 dll 옆에 종속성으로 있는 태그 file1.xml. 이 메타데이터는 시스템이 테스트 dll 옆에 있는 폴더에 있는 file1.xml 라는 항목을 테스트 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가 환경 변수를 resolve 수 없으면 오류가 발생합니다.

관리되는 테스트

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>