Partager via


Exemple de test piloté par les métadonnées

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