Delen via


Voorbeeld van metagegevens die gegevensgestuurde tests beïnvloeden

In deze sectie worden enkele geavanceerde functies van gegevensgestuurde tests beschreven. Als u nog steeds de basisbeginselen beslaat, wilt u misschien beginnen met een eenvoudig gegevensgestuurd voorbeeld.

Voorbeelden waarnaar wordt verwezen:

  • MetadataOverridingDataDrivenExample

  • DataDrivenMetadataOverridingExample

Als u de voorbeelden die in deze sectie worden behandeld vergelijkt met de voorbeelden die worden behandeld op de pagina Simple Data Driven Example , zult u merken dat het enige verschil is dat metagegevens en eigenschappen op verschillende niveaus in de test zijn toegevoegd. Laten we eerst kijken hoe een basistest is gemaakt.

Bekijk in het systeemeigen voorbeeld regels 5 en 10 in het onderstaande codevoorbeeld:

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  }

Alle tests die zijn gedefinieerd in klasse 'MetadataOverridingDataDrivenExample' hebben dus prioriteit van 2. Houd er rekening mee dat tests metagegevens kunnen overschrijven die zijn opgegeven op een niveau erboven (klasse of module). In dit geval behoudt de DataDrivenTest-methode nog steeds de prioriteit 2 en is de 'Eigenaar' gedefinieerd als 'WEX'. Als dit nu een niet-gegevensgestuurde test was, kunt u kiezen op basis van een van deze, /select:"@Priority=2" of /select:"@Owner='WEX'" en voer de testmethode erin uit. Maar met gegevensgestuurde tests kunt u de eigenschap die van toepassing is op het niveau van de testmethode verder overschrijven door metagegevens op het niveau Rij op te geven.

Laten we eens kijken naar het XML-bestand om te begrijpen hoe u dit doet.

    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>

In de eerste drie rijen overschrijft het voorbeeld enkele metagegevens door expliciet de metagegevens op te geven voor de specifieke set gegevenswaarden. De laatste set gegevens heeft echter dezelfde metagegevens als de methode die deze bevat: Priority=2 en Owner=WEX.

Laten we eens kijken naar de beheerde code voordat we kijken naar de selectie en uitvoering van deze tests.

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

Je bootst de eigenschappen in het interne voorbeeld ook precies hier na.

Laten we het overriden een beetje beter begrijpen:

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

zal worden uitgevoerd

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

wordt uitgevoerd:

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

Oefening voor de lezer

Probeer als oefening nieuwe metagegevenswaarden toe te voegen. Door enkel de selectiecriteria te variëren in de bovenstaande voorbeelden,

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

voert gegevensgestuurde tests uit met index #0 en #3 in zowel beheerde als systeemeigen voorbeelden

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

voert gegevensgestuurde tests uit met index #1 en #3 en voert ook de NonDataDrivenTest uit in het beheerde voorbeeld

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