Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esta seção aborda alguns recursos avançados de testes orientados por dados a título de exemplo. Se você ainda estiver cobrindo o básico, convém começar com um exemplo simples orientado por dados.
Exemplos referenciados:
MetadataOverridingDataDrivenExample
ExemploDeSubstituiçãoDeMetadadosOrientadosPorDados
Se você comparar os exemplos abordados nesta seção com os abordados na página Exemplo controlado por dados simples , notará que a única diferença é que metadados e propriedades em vários níveis no teste foram adicionados. Vamos primeiro ver 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 }
Assim, todos os testes definidos na classe "MetadataOverridingDataDrivenExample" tem prioridade de 2. Lembre-se, os testes podem substituir quaisquer metadados especificados em um nível acima deles (classe ou módulo). Neste caso, o método DataDrivenTest ainda mantém a prioridade de 2 e tem seu "Proprietário" definido como "WEX". Agora, se este fosse um teste não orientado 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. Mas com 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 primeiras 3 linhas, o exemplo substitui alguns metadados especificando explicitamente os metadados para o conjunto específico de valores de dados. O último conjunto de dados, no entanto, 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ê está imitando as propriedades no exemplo nativo exatamente aqui também.
Agora, vamos entender um pouco melhor a sobrecarga:
TE.exe Examples\CSharp.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
será executado
- WEX.Exemplos.DataDrivenMetadataOverridingExample.DataDrivenTest#0
- WEX.Examples.DataDrivenMetadataOverridingExample.DataDrivenTest#2
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*overriding*' and @Priority=1"
irá executar:
- WEX::TestExecution::Exemplos::MetadataOverridingDataDrivenExample::DataDrivenTest#0
- WEX::TestExecution::Exemplos::MetadataOverridingDataDrivenExample::DataDrivenTest#2
Exercício para o leitor
Como exercício, tente adicionar novos valores de metadados. Apenas variando os critérios de seleção nos exemplos acima,
/select:"@Name='*overriding*' and @Owner='WEX'"
executará testes orientados por dados com o índice #0 e #3 em exemplos gerenciados e nativos
/select:"@Name='*overriding*' and @Priority=2"
executará testes controlados por dados com o índice #1 e #3 e também executará o 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