Executando testes controlados por dados
Esteja ciente de como criar testes controlados por dados e como executar testes com TAEF antes de começar com dicas e truques de execução de DataDrivenTests com TAEF. Pode ser útil atualizar sua memória sobre como a consulta de seleção trabalha com o TAEF também.
Esta seção fala especificamente sobre a execução de testes controlados por dados baseados em tabela, mas o mesmo princípio básico também se aplica a testes controlados por dados baseados em PICT e WMI.
Se você quiser apenas executar todos os seus testes, incluindo testes controlados por dados, não há diferença de como você normalmente os executaria com o TAEF. Vamos considerar um exemplo de execução de nosso CPP\DataDrivenExample e CSharp\DataDrivenExample juntos usando TAEF. Lembre-se de que, por padrão, o TAEF executa testes fora do processo. Se você quiser executá-los no processo, use a opção "/inproc".
TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll
Dê uma olhada nos arquivos xml e nos arquivos de cabeçalho que especificam os metadados. Execute somente os testes controlados por dados que têm prioridade = 1, da seguinte maneira:
TE.exe Examples\*.Tests.dll /select:"@DataSource=* And @Priority=1"
Tenha em mente que os metadados especificados no nível de linha no arquivo xml substituem os metadados especificados no nível de criação TestMethod.
Vamos explorar um pouco mais do poder da execução de testes controlados por dados com o TAEF. Vamos dizer que você queira reproduzir apenas a 3ª linha na função FirstTable(). Você pode fazer isso usando o índice da linha, que será 2 (o índice começa em 0):
TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*FirstTable*' and @Data:index=2"
Observe que, o critério de seleção agora tem um novo namespace "@Data:", o qual pode ser usado especificamente para testes controlados por dados. Ao executar o teste acima, você observará que, em vez do '#index' usual que é anexado aos nomes de teste no caso de testes controlados por dados, você tem '#Black' anexado ao nome do teste, que é o metadados especial 'Nome' especificado para esta linha. Consulte Especificando metadados no nível de linha para obter detalhes. Apesar desse nome especial, você ainda pode selecionar usando o nome. A seleção de índice pode ajudar muito a selecionar um intervalo de linhas para um conjunto de dados realmente grande. Por exemplo (hipotético, não no exemplo), se você tiver um teste controlado por dados com 100 linhas (índice máximo = 99) e quiser executar apenas linhas com índice maior que 10 e menor que 20, agora você poderá facilmente especificar isso como:
TE.exe Examples\*.Tests.dll /select:"@Name='*MyDataDrivenTest*' and @Data:index > 10 and @Data:index < 20"
Muitas vezes, você gostaria de reproduzir com base em um valor de dados específico e não ter que passar pelo trabalho de encontrar seu índice. Nesse caso, você pode usar o namespace "@Data:" novamente. Agora, vamos dizer que, no exemplo nativo de testes de unidade (consulte Criando testes controlados por dados), você deseja executar apenas os casos em que "Theme" é "AeroBasic".
TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /select:"@Data:Theme='AeroBasic'"
Isso será exibido no console da seguinte maneira:
StartGroup: WEX::TestExecution::Examples::DataDrivenTests::SecondTable#2 [Process: 3588; Thread: 4584]
I am in second table.
Theme supplied as AeroBasic
EndGroup: WEX::TestExecution::Examples::DataDrivenTests::SecondTable#2 [Passed]
Summary: Total=1, Passed=1, Failed=0, Blocked=0, Not Run=0, Skipped=0
Você também pode aproveitar /listproperties para testes controlados por dados para ver os conjuntos de dados e os metadados (combinação de metadados especificados no nível do método de teste e no nível da linha) para o teste controlado por dados. Portanto,
TE.exe Examples\CSharp.DataDriven.Examples.dll /listproperties
listará todos os métodos (controlados por dados e outros) juntamente com os metadados e os valores de dados disponíveis e especificados em vários níveis.
Dê uma olhada em Substituindo metadados no nível de linha, Especificando tipos de parâmetros de matriz e Exemplo simples controlado por dados, por exemplo, instruções passo a passo que fornecem mais informações.