다음을 통해 공유


메타데이터 재정의 데이터 기반 테스트 예제

이 섹션에서는 예제를 통해 데이터 기반 테스트의 몇 가지 고급 기능에 대해 설명합니다. 기본 사항을 계속 다루는 경우 간단한 데이터 기반 예제로 시작하는 것이 좋습니다.

참조되는 예제:

  • MetadataOverridingDataDrivenExample

  • DataDrivenMetadataOverridingExample

이 섹션에서 다루는 예제를 단순 데이터 기반 예제 페이지에서 다루는 예제와 비교하면 테스트의 다양한 수준의 메타데이터와 속성이 추가되었다는 점만 알 수 있습니다. 먼저 기본 테스트를 작성하는 방법을 살펴보겠습니다.

네이티브 예제에서는 아래 코드 예제에서 줄 5와 10을 관찰합니다.

1   class MetadataOverridingDataDrivenExample
2   {
3      BEGIN_TEST_CLASS(MetadataOverridingDataDrivenExample)
4          ...
5          TEST_CLASS_PROPERTY(L"Priority", L"2")
6      END_TEST_CLASS()
7    
8      BEGIN_TEST_METHOD(DataDrivenTest)
9          ...
10     TEST_METHOD_PROPERTY(L"Owner", L"wex")
11     END_TEST_METHOD()
12  }

따라서 클래스 "MetadataOverridingDataDrivenExample"에 정의된 모든 테스트의 우선 순위는 2입니다. 테스트는 위의 수준(클래스 또는 모듈)에 지정된 메타데이터를 재정의할 수 있습니다. 이 경우 DataDrivenTest 메서드는 여전히 우선 순위가 2이며 "소유자"가 "WEX"로 정의됩니다. 이제 비데이터 기반 테스트인 경우 /select:"@Priority=2" 또는 /select:"@Owner='WEX'"를 기준으로 선택하고 테스트 메서드를 실행할 수 있습니다. 그러나 데이터 기반 테스트를 사용하면 "행" 수준에서 메타데이터를 지정하여 테스트 메서드 수준에서 적용 가능한 속성을 추가로 재정의할 수 있습니다.

방법을 이해하려면 XML 파일을 살펴보겠습니다.

    1  <?xml version="1.0"?>
    2  <Data>
    3    <Table Id="MetadataTable">
    4      <ParameterTypes>
    5        <ParameterType Name="Size">int</ParameterType>
    6      </ParameterTypes>
    7      <Row Priority="1">
    8        <Parameter Name="Size">4</Parameter>
    9        <Parameter Name="Color">White</Parameter>
    10      </Row>
    11      <Row Owner="C2">
    12        <Parameter Name="Size">10</Parameter>
    13        <Parameter Name="Color">Black</Parameter>
    14      </Row>
    15      <Row Priority="1" Owner="C3">
    16        <Parameter Name="Size">9</Parameter>
    17        <Parameter Name="Color">Orange</Parameter>
    18      </Row>
    19      <Row>
    20        <Parameter Name="Size">9</Parameter>
    21        <Parameter Name="Color">Blue</Parameter>
    22      </Row>
    23    </Table>
    24  </Data>

처음 3개 행에서 이 예제는 특정 데이터 값 집합에 대한 메타데이터를 명시적으로 지정하여 일부 메타데이터를 재정의합니다. 그러나 마지막 데이터 집합에는 이를 포함하는 메서드인 Priority=2 및 Owner=WEX와 동일한 메타데이터가 있습니다.

이러한 테스트의 선택 및 실행을 살펴보기 전에 관리 코드를 살펴보겠습니다.

1   [TestClass]
2   public class DataDrivenMetadataOverridingExample
3   {
4      [ClassInitialize]
5      [Priority(2)]
6      public static void MyClassInitialize(Object testContext)
7      {
8      }
9   
9      [TestMethod]
10     ...
11     [TestProperty("Owner", "WEX")]
12     public void DataDrivenTest()
13     {
14        ...
15     }
...

네이티브 예제의 속성도 여기서 정확히 모방하고 있습니다.

이제 재정의를 좀 더 잘 이해해 보겠습니다.

TE.exe Examples\CSharp.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"

가 실행됩니다.

  • WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#0
  • WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"

은 다음을 실행합니다.

  • WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#0
  • WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#2

읽기 권한자를 위한 연습

연습으로 새 메타데이터 값을 추가해 보세요. 위의 예제에서 선택 조건만 변경하면 됩니다.

/select:"@Name='*overriding*' and @Owner='WEX'"

는 관리되는 예제와 네이티브 예제 모두에서 인덱스 #0 및 #3을 사용하여 데이터 기반 테스트를 실행합니다.

 /select:"@Name='*overriding*' and @Priority=2"

는 인덱스 #1 및 #3을 사용하여 데이터 기반 테스트를 실행하고 관리되는 예제에서 NonDataDrivenTest도 실행합니다.

TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /name:*overriding* /listproperties
    F:\ Examples\CPP.DataDriven.Example.dll
        WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample
                Property[Priority] = 2

            WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#0
                    Property[Owner] = WEX
                    Property[Priority] = 1
                    Property[DataSource] =  Table:MetadataOverridingDataDrivenExample.xml#MetadataTable

                    Data[Color] = White
                    Data[Size] = 4

            WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#1
                    Property[Owner] = C2
                    Property[DataSource] =  Table:MetadataOverridingDataDrivenExample.xml#MetadataTable

                    Data[Color] = Black
                    Data[Size] = 10

            WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#2
                    Property[Owner] = C3
                    Property[Priority] = 1
                    Property[DataSource] =  Table:MetadataOverridingDataDrivenExample.xml#MetadataTable

                    Data[Color] = Orange
                    Data[Size] = 9

            WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#3
                    Property[Owner] = WEX
                    Property[DataSource] =  Table:MetadataOverridingDataDrivenExample.xml#MetadataTable

                    Data[Color] = Blue
                    Data[Size] = 9

    F:\ Examples\CSharp.DataDriven.Example.dll
        WEX.Examples.DataDrivenMetadataOverridingExample
                Setup: MyClassInitialize
                Property[Priority] = 2

            WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#0
                    Property[DataSource] = Table:CSharpDataDrivenMetadataOverridingExample.xml#MetadataTable
                    Property[Owner] = WEX
                    Property[Priority] = 1

                    Data[Color] = White
                    Data[Size] = 4

            WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#1
                    Property[DataSource] = Table:CSharpDataDrivenMetadataOverridingExample.xml#MetadataTable
                    Property[Owner] = C2

                    Data[Color] = Black
                    Data[Size] = 10

            WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
                    Property[DataSource] = Table:CSharpDataDrivenMetadataOverridingExample.xml#MetadataTable
                    Property[Owner] = C3
                    Property[Priority] = 1

                    Data[Color] = Orange
                    Data[Size] = 9

            WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#3
                    Property[DataSource] = Table:CSharpDataDrivenMetadataOverridingExample.xml#MetadataTable
                    Property[Owner] = WEX

                    Data[Color] = Blue
                    Data[Size] = 9

        WEX.Examples.DataDrivenMetadataOverridingExample.NonDataDrivenTest