Aracılığıyla paylaş


Veri Tabanlı Testte Meta Verilerin Geçersiz Kılınması Örneği

Bu bölüm, örnek olarak veri temelli testin bazı gelişmiş özelliklerini kapsar. Eğer hâlâ temelleri öğrenme aşamasındaysanız, Basit Veri Odaklı Bir Örnek ile başlamayı düşünebilirsiniz.

Başvurulan örnekler:

  • MetadataOverridingDataDrivenExample (Veri Yönlendirmeli Üzerine Yazma Meta Verisi Örneği)

  • VeriOdaklıMetaVeriGeçersizKılmaÖrneği

Bu bölümde ele alınan örnekleri Basit Veri Temelli Örnek sayfasında ele alınan örneklerle karşılaştırırsanız, tek farkın testteki çeşitli düzeylerdeki meta verilerin ve özelliklerin eklenmiş olması olduğunu fark edersiniz. Önce temel bir testin nasıl yazıldığından bakalım.

Yerel örnekte, aşağıdaki kod örneğinde 5. ve 10. satırları gözlemleyin:

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  }

Bu nedenle "MetadataOverridingDataDrivenExample" sınıfında tanımlanan tüm testler 2 önceliğine sahiptir. Testlerin üstlerinde belirtilen tüm meta verileri (sınıf veya modül) geçersiz kılabileceğini unutmayın. Bu durumda, DataDrivenTest metodu önceliğini 2 olarak korur ve "Sahip" "WEX" olarak tanımlanmıştır. Bu veri temelli olmayan bir testse, bu testlerden herhangi birini (/select:"@Priority=2" veya /select:"@Owner='WEX'" temelinde seçebilir ve test yöntemini yürütebilirsiniz. Ancak veri temelli testlerle, "Satır" düzeyinde meta verileri belirterek test yöntemi düzeyinde geçerli olan özelliği daha fazla geçersiz kılabilirsiniz.

Nasıl yapılacağını anlamak için XML dosyasına bakalım.

    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>

İlk 3 satırda, örnek belirli veri değerleri kümesinin meta verilerini açıkça belirterek bazı meta verileri geçersiz kılar. Ancak son veri kümesi, onu içeren yöntemle aynı meta verilere sahiptir: Priority=2 ve Owner=WEX.

Şimdi bu testlerin seçimine ve yürütülmesine bakmadan önce yönetilen koda göz atalım.

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     }
...

Yerel örnekteki özellikleri de tam olarak burada taklit ediyorsunuz.

Şimdi geçersiz kılmayı biraz daha iyi anlayalım:

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

çalışacak

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

şu komutu çalıştırır:

  • WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#0
  • WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::DataDrivenTest#2

Okuyucu için alıştırma

Alıştırma olarak yeni meta veri değerleri eklemeyi deneyin. Yalnızca yukarıdaki örneklerde seçim ölçütlerini değiştirerek,

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

hem yönetilen hem de yerel örneklerde dizin #0 ve #3 ile veri temelli testler çalıştırır

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

# 1 ve #3 dizinli veri temelli testleri çalıştırır ve ayrıca yönetilen örnekte NonDataDrivenTest'i çalıştırır

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