Partager via


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