Exemple de test piloté par la substitution des métadonnées
Cette section décrit certaines fonctionnalités avancées des tests pilotés par les données à titre d’exemple. Si vous continuez à couvrir les principes de base, vous pouvez commencer par un exemple simple piloté par les données.
Exemples référencés :
MetadataOverridingDataDrivenExample
DataDrivenMetadataOverridingExample
Si vous comparez les exemples abordés dans cette section à ceux abordés dans la page Exemple piloté par les données simples , vous remarquerez que la seule différence est que les métadonnées et les propriétés à différents niveaux du test ont été ajoutées. Examinons d’abord comment un test de base est créé.
Dans l’exemple natif, observez les lignes 5 et 10 dans l’exemple de code ci-dessous :
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 }
Ainsi, tous les tests définis dans la classe « MetadataOverridingDataDrivenExample » ont la priorité 2. N’oubliez pas que les tests peuvent remplacer toutes les métadonnées spécifiées à un niveau supérieur (classe ou module). Dans ce cas, la méthode DataDrivenTest conserve toujours la priorité 2 et son « Propriétaire » est défini comme étant « WEX ». Maintenant, s’il s’agissait d’un test non piloté par les données, vous pouvez choisir en fonction de l’un de ces critères, /select:"@Priority=2 » ou /select:"@Owner='WEX' », puis y exécuter la méthode de test. Toutefois , avec les tests pilotés par les données, vous pouvez remplacer davantage la propriété applicable au niveau de la méthode de test en spécifiant les métadonnées au niveau « Ligne ».
Examinons le fichier XML pour comprendre comment procéder.
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>
Dans les 3 premières lignes, l’exemple remplace certaines métadonnées en spécifiant explicitement les métadonnées pour le jeu particulier de valeurs de données. Toutefois, le dernier jeu de données a les mêmes métadonnées que la méthode qui le contient : Priority=2 et Owner=WEX.
Examinons le code managé avant d’examiner la sélection et l’exécution de ces 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 }
...
Vous imitez également les propriétés de l’exemple natif.
Maintenant, nous allons mieux comprendre la substitution :
TE.exe Examples\CSharp.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
s’exécutera
- WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#0
- WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
exécute :
- WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#0
- WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#2
Exercice pour le lecteur
En guise d’exercice, essayez d’ajouter de nouvelles valeurs de métadonnées. Faire varier uniquement les critères de sélection dans les exemples ci-dessus,
/select:"@Name='*overriding*' and @Owner='WEX'"
exécutera des tests pilotés par les données avec les index #0 et #3 dans les exemples managés et natifs
/select:"@Name='*overriding*' and @Priority=2"
exécute des tests pilotés par les données avec les index #1 et #3, et exécute également nonDataDrivenTest dans l’exemple managé
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