Beispiel für datengesteuerten Test zum Überschreiben von Metadaten
In diesem Abschnitt werden einige erweiterte Features des datengesteuerten Testens anhand von Beispielen behandelt. Wenn Sie sich noch mit den Grundlagen vertraut machen, sollten Sie mit einem einfachen datengesteuerten Beispiel beginnen.
Beispiele, auf die verwiesen wird:
MetadataOverridingDataDrivenExample
DataDrivenMetadataOverridingExample
Wenn Sie die In diesem Abschnitt behandelten Beispiele mit denen vergleichen, die auf der Seite Simple Data Driven Example behandelt werden, werden Sie feststellen, dass der einzige Unterschied darin besteht, dass Metadaten und Eigenschaften auf verschiedenen Ebenen im Test hinzugefügt wurden. Sehen wir uns zunächst an, wie ein grundlegender Test erstellt wird.
Sehen Sie sich im nativen Beispiel die Zeilen 5 und 10 im folgenden Codebeispiel an:
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 }
Daher haben alle in der Klasse "MetadataOverridingDataDrivenExample" definierten Tests die Priorität 2. Denken Sie daran, dass Tests alle Metadaten überschreiben können, die auf einer Darüberebene (Klasse oder Modul) angegeben werden. In diesem Fall behält die DataDrivenTest-Methode weiterhin die Priorität 2 bei und hat ihren "Besitzer" als "WEX" definiert. Wenn es sich nun um einen nicht datengesteuerten Test handelt, können Sie basierend auf einem dieser Optionen /select:"@Priority=2" oder /select:"@Owner='WEX'" auswählen und die Darin enthaltene Testmethode ausführen. Bei datengesteuerten Tests können Sie jedoch die auf Testmethodenebene anwendbare Eigenschaft weiter außer Kraft setzen, indem Sie Metadaten auf der Ebene "Zeile" angeben.
Sehen wir uns die XML-Datei an, um zu verstehen, wie das geht.
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 den ersten 3 Zeilen überschreibt das Beispiel einige Metadaten, indem die Metadaten für den bestimmten Satz von Datenwerten explizit angegeben werden. Der letzte Satz von Daten verfügt jedoch über dieselben Metadaten wie die Methode, die ihn enthält: Priority=2 und Owner=WEX.
Sehen wir uns den verwalteten Code an, bevor wir uns mit der Auswahl und Ausführung dieser Tests befassen.
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 }
...
Sie imitieren die Eigenschaften im nativen Beispiel genau auch hier.
Lassen Sie uns nun die Überschreibung ein wenig besser verstehen:
TE.exe Examples\CSharp.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
wird ausgeführt.
- WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#0
- WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
wird ausgeführt:
- WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#0
- WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#2
Übung für den Leser
Versuchen Sie als Übung, neue Metadatenwerte hinzuzufügen. Nur das Variieren der Auswahlkriterien in den obigen Beispielen,
/select:"@Name='*overriding*' and @Owner='WEX'"
führt datengesteuerte Tests mit Index #0 und #3 in verwalteten und nativen Beispielen aus.
/select:"@Name='*overriding*' and @Priority=2"
führt datengesteuerte Tests mit index #1 und #3 aus und führt auch den NonDataDrivenTest im verwalteten Beispiel aus.
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