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