Exemplo de teste baseado em dados de substituição de metadados
Esta seção aborda alguns recursos avançados de teste controlado por dados por meio de exemplo. Se você ainda estiver cobrindo as noções básicas, talvez queira começar com um exemplo simples controlado por dados.
Exemplos referenciados:
MetadataOverridingDataDrivenExample
DataDrivenMetadataOverridingExample
Se você comparar os exemplos abordados nesta seção com os abordados na página Exemplo Orientado por Dados Simples , observará que a única diferença é que metadados e propriedades em vários níveis no teste foram adicionados. Vamos primeiro examinar como um teste básico é criado.
No exemplo nativo, observe as linhas 5 e 10 no exemplo de código abaixo:
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 }
Portanto, todos os testes definidos na classe "MetadataOverridingDataDrivenExample" têm prioridade de 2. Lembre-se de que os testes podem substituir todos os metadados especificados em um nível acima deles (classe ou módulo). Nesse caso, o método DataDrivenTest ainda mantém a prioridade 2 e tem seu "Proprietário" definido como "WEX". Agora, se esse fosse um teste não controlado por dados, você poderia escolher com base em qualquer um deles, /select:"@Priority=2" ou /select:"@Owner='WEX'", e executar o método de teste nele. Porém , com os testes controlados por dados, você pode substituir ainda mais a propriedade aplicável no nível do método de teste especificando metadados no nível "Linha".
Vamos examinar o arquivo XML para entender como.
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>
Nas três primeiras linhas, o exemplo substitui alguns metadados especificando explicitamente os metadados para o conjunto específico de valores de dados. No entanto, o último conjunto de dados tem os mesmos metadados que o método que o contém: Priority=2 e Owner=WEX.
Vamos dar uma olhada no código gerenciado antes de examinar a seleção e a execução desses testes.
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 }
...
Você também está imitando as propriedades no exemplo nativo exatamente aqui.
Agora, vamos entender a substituição um pouco melhor:
TE.exe Examples\CSharp.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
será executado
- WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#0
- WEX. Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
executará:
- WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#0
- WEX::TestExecution::Examples::MetadataOverridingDataDrivenExample::D ataDrivenTest#2
Exercício para o leitor
Como exercício, tente adicionar novos valores de metadados. Variando apenas os critérios de seleção nos exemplos acima,
/select:"@Name='*overriding*' and @Owner='WEX'"
executará testes controlados por dados com índice nº 0 e nº 3 em exemplos gerenciados e nativos
/select:"@Name='*overriding*' and @Priority=2"
executará testes controlados por dados com o índice nº 1 e #3 e também executará NonDataDrivenTest no exemplo gerenciado
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