Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette section décrit certaines fonctionnalités avancées des tests pilotés par les données par exemple. Si vous couvrez toujours les principes de base, vous pouvez commencer par un exemple simple piloté par les données.
Exemples référencés :
Exemple de Métadonnées de Remplacement Piloté par les Données
DataDrivenMetadataOverridingExample
Si vous comparez les exemples abordés dans cette section aux exemples couverts 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. Examine tout d’abord la création d’un test de base.
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 au-dessus de celles-ci (classe ou module). Dans ce cas, la méthode DataDrivenTest conserve toujours la priorité 2 et a son « Propriétaire » défini comme « 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 tests, /select :"@Priority=2 » ou /select :"@Owner='WEX' », puis exécuter la méthode de test dans celle-ci. Toutefois , avec les tests pilotés par des données, vous pouvez outrepasser 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 l’ensemble particulier de valeurs de données. Le dernier jeu de données a toutefois 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 exactement les propriétés dans l’exemple natif ici également.
Maintenant, comprenons le remplacement un peu mieux :
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"
s’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. 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 l’index #0 et le #3 dans des exemples managés et natifs
/select:"@Name='*overriding*' and @Priority=2"
exécutera des tests pilotés par les données avec l’index #1 et le #3, et exécutera également le Test 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