방법: 데이터 기반 단위 테스트 만들기

관리 코드에 대 한 Microsoft 단위 테스트 프레임 워크를 사용 하 여 단위 테스트 메서드를 테스트 메서드에서 데이터 소스에서 사용 되는 값을 검색 하려면 설정할 수 있습니다.메서드는 연속적으로 쉽게 단일 메서드를 사용 하 여 다양 한 입력 테스트 하려면 데이터 원본의 각 행에 대해 실행 됩니다.

이 항목에는 다음과 같은 단원이 포함되어 있습니다.

데이터 기반 단위 테스트를 만드는 다음 단계를 수행 해야 합니다.

  1. 테스트 메서드를 사용 하 여 값이 포함 된 데이터 소스를 만듭니다.데이터 원본 테스트를 실행 하는 컴퓨터에 등록 된 모든 형식을 수 있습니다.

  2. 추가 개인 TestContext 필드와 공용 TestContext 테스트 클래스의 속성입니다.

  3. 단위 테스트 메서드를 만들고 추가 DataSourceAttribute 특성에 해당 합니다.

  4. 사용 하는 DataRow 테스트에 사용 되는 값을 검색할 수 있는 인덱서 속성.

테스트 대상 메서드

예를 들어 우리가 만들었다고 가정해 봅시다.

  1. 솔루션 이라는 MyBank 허용 하 고 다른 종류의 계정에 대 한 트랜잭션을 처리 합니다.

  2. 프로젝트에 MyBank 라는 BankDb 는 계정에 대 한 트랜잭션을 관리 합니다.

  3. 클래스 라는 Maths 에 있는 DbBank 모든 트랜잭션 은행을 만들어낼 수 있도록 수학 함수를 수행 하는 프로젝트.

  4. 단위 테스트 프로젝트 라는 BankDbTests 의 동작을 테스트 하는 BankDb 구성 요소입니다.

  5. 단위 테스트 라는 클래스 MathsTests 의 동작을 확인 하는 Maths 클래스입니다.

우리는 메서드에서 테스트 합니다 Maths 루프를 사용 하 여 두 정수를 추가 합니다.

public int AddIntegers(int first, int second)
{
    int sum = first;
    for( int i = 0; i < second; i++)
    {
        sum += 1;
    }
    return sum;
}

데이터 소스 만들기

테스트는 AddIntegers 메서드를 우리가 매개 변수와 반환할 예상 되는 합계에 대 한 값 범위를 지정 하는 데이터 원본 만들기.이 예에서 우리가 라는 컴팩트 Sql 데이터베이스 만들기 MathsData 및 라는 테이블 AddIntegersData 다음 열 이름 및 값을 포함

FirstNumber

SecondNumber

합계

0

1

1

1

1

2

2

-3

-1

테스트 클래스의 TestContext 추가

단위 테스트 프레임 워크는 TestContext 데이터 기반 테스트에 대 한 데이터 원본 정보를 저장 하는 개체입니다.프레임 워크 다음이 개체의 값으로 설정 하는 TestContext 만들 속성.

    private TestContext testContextInstance;
    public TestContext TestContext
    {
        get { return testContextInstance; }
        set { testContextInstance = value; }
    }

테스트 메서드를 통해 데이터를 액세스를 DataRow 의 인덱서 속성의 TestContext.

테스트 메서드를 작성합니다.

테스트 메서드를 AddIntegers 은 매우 간단 합니다.데이터 소스의 각 행에 대해 우리를 호출 합니다. AddIntegers 에 FirstNumberSecondNumber 우리 대 한 반환 값을 확인 하 고 열 값을 매개 변수로 합계 열 값:


    [DataSource(@"Provider=Microsoft.SqlServerCe.Client.4.0; Data Source=C:\Data\MathsData.sdf;", "Numbers")]
    [TestMethod()]
    public void AddIntegers_FromDataSourceTest()
    {
        var target = new Maths();
        
        // Access the data
        int x = Convert.ToInt32(TestContext.DataRow["FirstNumber"]);
        int y = Convert.ToInt32(TestContext.DataRow["SecondNumber"]); 
        int expected = Convert.ToInt32(TestContext.DataRow["Sum"]);
        int actual = target.IntegerMethod(x, y);
        Assert.AreEqual(expected, actual,
            "x:<{0}> y:<{1}>",
            new object[] {x, y});

    }

이때의 Assert 메서드를 표시 하는 메시지를 포함는 x 및 y 값의 실패를 반복 합니다.기본적으로 설정 된 값을 expected 및 actual, 이미 실패 한 테스트의 세부 정보에 포함 되어 있습니다.

ms182527.collapse_all(ko-kr,VS.110).gifDatasourceattribute를 지정합니다.

DataSource 특성 테스트 메서드에서 데이터 소스 및 사용할 테이블의 이름에 대 한 연결 문자열을 지정 합니다.연결 문자열의 정확한 정보는 사용 중인 데이터 소스의 종류에 따라 달라집니다.이 예제에서는 SqlServerCe 데이터베이스에 사용 되는.

    [DataSource(@"Provider=Microsoft.SqlServerCe.Client.4.0;Data Source=C:\Data\MathsData.sdf", "AddIntegersData")]

DataSource 특성에는 세 명의 생성자가 있습니다.

[DataSource(dataSourceSettingName)]

매개 변수 중 하나를 사용 하 여 생성자 솔루션의 app.config 파일에 저장 된 연결 정보를 사용 합니다.DataSourceSettingsName 연결 정보를 지정 하는 구성 파일의 Xml 요소 이름입니다.

App.config 파일을 사용 하 여 단위 테스트를 변경 하지 않고 데이터 원본의 위치를 변경할 수 있습니다.만들고 있는 app.config 파일을 사용 하는 방법에 대 한 내용은 참조 하십시오.연습: 구성 파일을 통한 데이터 소스 정의

[DataSource(connectionString, tableName)]

DataSource 두 개의 매개 변수를 가진 생성자 테스트 메서드에 대 한 데이터가 들어 있는 테이블의 이름과 데이터 원본에 대 한 연결 문자열을 지정 합니다.

연결 문자열 형식 데이터 원본의 유형에 따라 달라 집니다 있지만 고정 데이터 공급자의 이름을 지정 하는 공급자 요소를 포함 해야 합니다.

[DataSource(
    dataProvider, 
    connectionString, 
    tableName,
    dataAccessMethod
    )]

ms182527.collapse_all(ko-kr,VS.110).gifTestcontext.datarow를 사용 하 여 데이터에 액세스 하려면

데이터에 액세스 하는 AddIntegersData 테이블에서 사용 하는 TestContext.DataRow 인덱서.DataRow되는 DataRow 우리 인덱스나 열 이름으로 열 값을 검색할 개체입니다.값을 개체로 반환 됩니다 때문에 적절 한 형식으로 변환할 필요 합니다.

int x = Convert.ToInt32(TestContext.DataRow["FirstNumber"]);

테스트 실행 및 결과 보기

테스트 메서드를 작성 한 후에 테스트 프로젝트를 빌드하십시오.테스트 메서드가 테스트 탐색기 창에 표시를 테스트 실행 하지 그룹.실행, 쓰기 및 테스트를 다시 실행 하면 그룹에 탐색기 테스트 결과가 표시 됩니다 테스트 실패, 테스트 통과, 및 테스트 실행 하지.선택할 수 있습니다 를 실행 하는 모든 모든 테스트를 실행 하거나 선택할 수 실행... 실행할 테스트의 하위 집합을 선택할 수 있습니다.

테스트가 실행 될 때 테스트 결과 표시줄 탐색기의 위쪽에 애니메이션이 적용 됩니다.테스트에 실패 한 경우 테스트 실행을 마치면 모든 테스트가 통과 된 경우 녹색 또는 빨강 막대가 됩니다.테스트 실행의 요약 테스트 탐색기 창의 아래쪽에 있는 세부 정보 창에 표시 됩니다.아래쪽 창에 해당 테스트의 세부 정보를 보려면 테스트를 선택 합니다.

실행 하는 경우는 AddIntegers_FromDataSourceTest 메서드 예제에서 결과 표시줄 빨간색으로 바뀌고 이동 된 테스트 메서드는 테스트 실패 이면 실패 이터레이션되 메서드는 데이터를 원본 데이터 기반 테스트에 실패 합니다.테스트 탐색기 창에는 실패 한 데이터 기반 테스트를 선택 하면 세부 정보 창에 데이터 행 인덱스로 식별 되는 각 반복 결과 표시 합니다.이 예에서 나타납니다은 AddIntegers 알고리즘 음수 값 올바르게 처리 하지 않습니다.

때 테스트 대상 메서드를 수정 하 고 테스트를 다시 실행 결과 막대 녹색 바뀌고 테스트 메서드가 이동의 테스트 통과 그룹.

참고 항목

참조

Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute

Microsoft.VisualStudio.TestTools.UnitTesting.TestContext

TestContext.DataRow

Microsoft.VisualStudio.TestTools.UnitTesting.Assert

개념

단위 테스트를 사용하여 코드 확인

관리 코드용 Microsoft 단위 테스트 프레임워크를 사용하여 .NET Framework용 단위 테스트 작성

기타 리소스

방법: 단위 테스트 만들기 및 실행

테스트 탐색기를 사용하여 단위 테스트 실행