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실행 폴더에 기초가 있어야 또는 테스트에는 고유한 별도 배포 폴더에서 테스트를 실행 합니다.배포 폴더를 사용 하는 경우 테스트 엔진 배포 폴더를 만들고 테스트 코드, 응용 프로그램을 참조 하는 모든 어셈블리를 포함 하는 어셈블리에 복사 합니다.
하지만 일부 테스트 테스트 데이터, 구성 파일, 데이터베이스 또는 명시적으로 로드 된 어셈블리와 같은 추가 파일을 필요로 합니다.테스트 하는 동안 이러한 파일을 사용할 수 있도록 하는 테스트 어셈블리와 함께 복사 해야 지정할 필요가 있습니다.이 작업을 수행 하는 가장 좋은 방법은 다음과 같습니다.
빌드 프로세스의 일부로 빌드 대상 디렉터리에 파일을 복사 합니다.
하나의 테스트 프로젝트에 특정 경우 컨텐트 파일에는 Visual Studio 프로젝트를 테스트할 때 포함 됩니다.솔루션 탐색기에서 선택 하 고 설정 된 출력 디렉터리로 복사 속성을 내용만 복사.
그렇지 않은 경우 빌드 출력 디렉터리에 파일을 복사 하는 빌드 후 작업을 정의 합니다.예를 들면 다음과 같습니다.
xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
테스트 프로젝트의 프로젝트 속성을 엽니다.C# 프로젝트를 열고 있는 빌드 이벤트 페이지입니다.Visual Basic 프로젝트를 열고 있는 컴파일 페이지를 선택 하 고 빌드 이벤트.복사 명령에 추가 된 빌드 후 이벤트 필드입니다.
사용 DeploymentItemAttribute 에 테스트 메서드나 테스트 클래스 파일과 빌드 출력 디렉터리를 배포 디렉터리에 복사 해야 하는 폴더를 지정 합니다.
빌드 출력 디렉터리에 직접 단위 테스트를 실행 실행을 보다 신속 하 게 테스트 하도록 고려해 야 합니다.테스트에서 확인 한 후 빌드 서버에 특히 유용 합니다.이렇게 하려면 추가 .runsettings 솔루션에 파일을 포함 <DeploymentEnabled>False</DeploymentEnabled>, 선택한 파일에는 테스트, 테스트 설정 메뉴.에 DeploymentItemAttribute 전혀 사용 되지 않는 모든 테스트 실행에서 같은 효과 발생 합니다.
그러나 실패를 실행 한 후 데이터 파일을 검사 하려는 경우이 작업을 수행 하지 수도 있습니다.
배포 폴더를 사용 하 여 사용 하는 경우를 방지는 .testsettings 에 대한 웹 및 부하 테스트에 필요한 파일을 코딩 된 UI 테스트 및 응용 프로그램을 원격 컴퓨터에 배포 된 테스트 합니다.
모든 테스트를 시작 하기 전에 테스트 실행에서 실행 된 테스트의 모든 항목을 배포 됩니다.
자세한 내용은 방법: 테스트에 대한 파일 배포을 참조하십시오.
DeploymentItemAttribute두 매개 변수가 있습니다.
소스 항목 경로 빌드 출력 폴더에 상대적입니다.이 파일 또는 폴더가 될 수 있습니다.프로젝트 구조에 대한 종속성을 방지 하려면 빌드 프로세스의 일부로 빌드 출력 디렉터리에 항목을 이동 합니다.배포 하는 배포 항목 특성을 사용 합니다.
(선택 사항) 대상 디렉터리 경로 폴더에 있어야 배포 디렉터리에 상대적입니다.폴더가 없는 경우 만들어집니다.기본값은 배포 디렉터리입니다.
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(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.