Compartir a través de


Ejemplo de prueba controlada por datos de invalidación de metadatos

En esta sección se tratan algunas características avanzadas de las pruebas controladas por datos a modo de ejemplo. Si sigue cubriendo los conceptos básicos, es posible que desee empezar con un ejemplo simple controlado por datos.

Ejemplos a los que se hace referencia:

  • MetadataOverridingDataDrivenExample

  • DataDrivenMetadataOverridingExample

Si compara los ejemplos que se tratan en esta sección con los que se tratan en la página Ejemplo simple controlado por datos , observará que la única diferencia es que se han agregado metadatos y propiedades en varios niveles de la prueba. Veamos primero cómo se crea una prueba básica.

En el ejemplo nativo, observe las líneas 5 y 10 en el ejemplo de código siguiente:

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  }

Por lo tanto, todas las pruebas definidas en la clase "MetadataOverridingDataDrivenExample" tienen prioridad 2. Recuerde que las pruebas pueden invalidar los metadatos especificados en un nivel por encima de ellos (clase o módulo). En este caso, el método DataDrivenTest sigue manteniendo la prioridad de 2 y tiene su "Propietario" definido como "WEX". Ahora, si se trata de una prueba no controlada por datos, puede elegir en función de cualquiera de estas opciones, /select:"@Priority=2" o /select:"@Owner='WEX'" y ejecutar el método de prueba en él. Sin embargo , con las pruebas controladas por datos, puede invalidar aún más la propiedad aplicable en el nivel de método de prueba especificando metadatos en el nivel de "Fila".

Echemos un vistazo al archivo XML para comprender cómo.

    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>

En las primeras 3 filas, el ejemplo invalida algunos metadatos especificando explícitamente los metadatos para el conjunto determinado de valores de datos. Sin embargo, el último conjunto de datos tiene los mismos metadatos que el método que lo contiene: Priority=2 y Owner=WEX.

Echemos un vistazo al código administrado antes de examinar la selección y ejecución de estas pruebas.

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     }
...

Está imitando las propiedades del ejemplo nativo exactamente aquí.

Ahora, vamos a entender la invalidación un poco mejor:

TE.exe Examples\CSharp.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"

se ejecutará

  • WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#0
  • WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"

ejecutará:

  • WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#0
  • WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#2

Ejercicio para el lector

Como ejercicio, pruebe a agregar nuevos valores de metadatos. Solo variando los criterios de selección en los ejemplos anteriores,

/select:"@Name='*overriding*' and @Owner='WEX'"

ejecutará pruebas controladas por datos con el índice n.º 0 y el 3 en ejemplos administrados y nativos.

 /select:"@Name='*overriding*' and @Priority=2"

ejecutará pruebas controladas por datos con el índice 1 y #3 y también ejecutará NonDataDrivenTest en el ejemplo administrado.

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