다음을 통해 공유


DeploymentItemAttribute 클래스

파일이 나 어셈블리와 함께 테스트를 실행 하기 전에 배포 해야 하는 디렉터리를 지정 합니다. 이 특성은 테스트 클래스에 첨부 하거나 메서드를 테스트 합니다. 여러 인스턴스를 사용할 수 있습니다. 이 특성은 상속 되지 않습니다.

상속 계층 구조

Object
  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 형식에서는 다음과 같은 멤버를 노출합니다.

생성자

  이름 설명
Public 메서드 DeploymentItemAttribute(String) 테스트 실행이 시작되기 전에 배포할 항목을 지정합니다.
Public 메서드 DeploymentItemAttribute(String, String) 테스트 실행이 시작되기 전에 배포할 항목을 지정합니다.

위쪽

속성

  이름 설명
Public 속성 OutputDirectory 항목을 복사 하는 디렉터리의 경로 가져옵니다.
Public 속성 Path 원본 파일이 나 폴더를 복사할 경로 가져옵니다.
Public 속성 TypeId 파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다. (Attribute에서 상속됨)

위쪽

메서드

  이름 설명
Public 메서드 Equals 인프라입니다. 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (Attribute에서 상속됨)
Public 메서드 GetHashCode 이 인스턴스의 해시 코드를 반환합니다. (Attribute에서 상속됨)
Public 메서드 GetType 현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드 IsDefaultAttribute 파생 클래스에서 재정의된 경우 이 인스턴스의 값이 파생 클래스의 기본값인지 여부를 나타냅니다. (Attribute에서 상속됨)
Public 메서드 Match 파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (Attribute에서 상속됨)
Public 메서드 ToString 현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)

위쪽

명시적 인터페이스 구현

  이름 설명
명시적 인터페이스 구현Private 메서드 System#Runtime#InteropServices#_Attribute#GetIDsOfNames 이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다. (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드 System#Runtime#InteropServices#_Attribute#GetTypeInfo 인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다. (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드 System#Runtime#InteropServices#_Attribute#GetTypeInfoCount 개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1). (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드 System#Runtime#InteropServices#_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 파일에 대 한 웹 및 부하 테스트를 해야 하는 코딩 된 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) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

참고 항목

참조

Microsoft.VisualStudio.TestTools.UnitTesting 네임스페이스