Partilhar via


Seleção

O Test Authoring and Execution Framework (TAEF) fornece um mecanismo para executar ou omitir seletivamente determinados testes com base nas informações de metadados fornecidas. A seção a seguir apresenta vários exemplos de como usar esse mecanismo de seleção com TE.exe.

Você pode executar TE.exe a partir de uma janela de prompt de comando.

TE <test_binaries> [/select:<selection criteria>]

Esta seção descreve a opção TE.exe /select:selection criteria . Para obter mais informações sobre TE.exe, consulte TE.exe Opções de comando.

Os critérios de seleção são aplicados globalmente a todos os binários de teste que foram mencionados no prompt de comando. Vamos considerar dois binários de teste: Exemplos\CPP.SelectionCriteria1.Example.dll e Exemplos\CPP.SelectionCriteria2.Example.dll. O exemplo a seguir mostra as propriedades, ou metadados, especificados nos vários níveis nesses test_binaries. Você também pode obter isso especificando a opção /listproperties na janela do prompt de comando.

CPP.SelectionCriteria1.Example.dll (Owner="C1", Priority=3)
class11 (Owner="C2")
method111(Priority=1)

method112 (BackwardsCompatibility="Windows 2000")
class12
method121
CPP.SelectionCriteria2.Example.dll (Owner="WEX")
class21 (Owner="C1", Priority=2, BackwardsCompatibility="Windows XP")
method211 (Owner="C2")
class22 (Owner="U3")
method221

Em outras palavras, usando /listproperties em cada um desses test_binaries separadamente, você obtém:

F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution>te Examples\CPP.SelectionCriteria1.Example.dll /listproperties
Test Authoring and Execution Framework v2.2 Build 6.1.7689.0 (release.091218-1251) for x86

F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution\Examples\CPP.SelectionCriteria1.Example.dll
        Property[Owner] = C1
        Property[Priority] = 3
    WEX::TestExecution::Examples::Class11
            Property[Owner] = C2
        WEX::TestExecution::Examples::Class11::Method111
                Property[Priority] = 1
        WEX::TestExecution::Examples::Class11::Method112
                Property[BackwardsCompatibility] = Windows2000

    WEX::TestExecution::Examples::Class12
        WEX::TestExecution::Examples::Class12::Method121

E:

F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution>te Examples\CPP.SelectionCriteria2.Example.dll /listproperties
Test Authoring and Execution Framework v2.2 Build 6.1.7689.0 (release.091218-1251) for x86

F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution\Examples\CPP.SelectionCriteria2.Example.dll
        Property[Owner] = WEX
    WEX::TestExecution::Examples::Class21
            Property[BackwardsCompatibility] = Windows XP
            Property[Owner] = C1
            Property[Priority] = 2
        WEX::TestExecution::Examples::Class21::Method211
                Property[Owner] = C2

    WEX::TestExecution::Examples::Class22
            Property[Owner] = U3
        WEX::TestExecution::Examples::Class22::Method221

É importante observar que, neste ponto, os binários de teste são listados com o seu caminho completo, e os nomes de classe são listados como "<Namespace>::<ClassName>" no caso de binários de teste nativos e "<Namespace>.<ClassName>" no caso de binários de teste geridos. Da mesma forma, os nomes de método de teste são listados como "<Namespace>::<ClassName>::<TestMethodName>" no caso de test_binaries nativos e "<Namespace>.<ClassName>.<TestMethodName>" no caso de test_binaries geridos.

Em outras palavras, o nome completo de qualquer nome ou função é guardado em te. Isto é para permitir a capacidade de distinguir exclusivamente qualquer método. Por exemplo, se duas classes tiverem o mesmo nome de método, a qualificação de classe ajudará a selecionar exclusivamente o método que você está interessado. Para este fim, os critérios de seleção ajudam a executar apenas os testes que correspondem aos seus critérios nas test_binaries dadas.

No exemplo acima, digamos em Exemplos\Cpp.SelectionCriteria1.Example.dll, você pode escolher "Method111" por qualquer um dos seguintes critérios de seleção:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='WEX::TestExecution::Examples::Class11::Method111'"
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='*Class11::Method111'"
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='*Method111'"

Você pode optar por executar todos os testes que foram marcados com "Prioridade" inferior a 2, executando o seguinte:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority < 2"

Isso executaria apenas Exemplos\CPP.SelectionCriteria1.Example.dll - "class11::method111" em nosso exemplo.

Se quiser executar todos os testes na classe11, pode usar a propriedade qualificada "Nome" juntamente com caracteres universais para escolhê-la como se segue:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll
                                                               /select:"@Name='*::class11::*'"

Ao usar critérios de seleção, há algumas coisas que é útil ter em mente:

  • "e", "não" e "ou" são palavras reservadas e são insensíveis a maiúsculas e minúsculas.
  • Os nomes e valores das propriedades de metadados não diferenciam maiúsculas de minúsculas, por exemplo, "C2" no exemplo, corresponderia a "c2" e "C2". Portanto, se você tiver uma função com metadados "propriedade" e outra com "Propriedade" e o critério de seleção estiver procurando por "PROPRIEDADE", ela corresponderia a ambas.
  • O valor da cadeia de caracteres na cadeia de caracteres da consulta de seleção deve ser incluído entre aspas simples. Dentro de um valor de cadeia de caracteres numa consulta de seleção, "?" é um caractere curinga único e "*" representa zero ou mais caracteres curinga.
  • Ao usar aspas no prompt de comando, esteja atento às aspas inteligentes ao copiar uma consulta de seleção. Se você copiar uma consulta de seleção de um email do Outlook, poderá acidentalmente ter aspas inteligentes e o TAEF talvez não consiga analisá-las. Digite as aspas em vez disso.

Vamos analisar alguns exemplos rápidos de critérios de seleção compostos e o que eles executariam.

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=2"

Será executado:

  • Exemplos\CPP.SelectionCriteria2.Example.dll - class21::method211
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=3"

Será executado:

  • Exemplos\CPP.SelectionCriteria1.Example.dll - class11::method112
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='U3' oR @Priority=1"

Será executado:

  • Exemplos\CPP.SelectionCriteria1.Example.dll - class11::method111
  • Exemplos\CPP.SelectionCriteria2.Example.dll - class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*)"

Executará todos os testes em que o valor BackwardsCompatibility não foi especificado. (Veja os itens a seguir.)

  • Exemplos\CPP.SelectionCriteria1.Example.dll - class11::method111, class12::method121
  • Exemplos\CPP.SelectionCriteria2.Example.dll - class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C*'"

executará todos os testes em que o valor do proprietário começa com "C" (sem distinção de maiúsculas ou minúsculas). Assim, o comando anterior executará todos os testes em Exemplos\CPP.SelectionCriteria1.Example.dll and all tests in Examples\CPP.SelectionCriteria2.Example.dll em class21 (ou seja, method211)

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*) OR (@Owner='C*' AND @BackwardsCompatibility='*XP*')"

executará todos os testes em que o BackwardsCompatibility não esteja especificado ou onde o nome do proprietário começa com "C" e o valor BackwardsCompatibility contém XP. Observe como os parênteses "(" e ")" são usados para especificar a ordem de precedência.

No exemplo, isso seria executado seletivamente:

  • Exemplos\CPP.SelectionCriteria1.Example.dll - class11::method111, class12::method121,
  • Exemplos\CPP.SelectionCriteria2.Example.dll - class21::method211, class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Owner='???'"

só executará testes que tenham valor de proprietário de propriedade contendo apenas 3 caracteres.

No nosso exemplo, isso corresponderia a "C" e seria executado apenas:

  • Exemplos\CPP.SelectionCriteria1.Example.dll - class12::method121
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority>=1"

Observação

Este é um bom exemplo de como você pode usar ">=", "<=", ">" e "<" onde propertyvalues são floatvalues.

Em nosso exemplo, isso executaria todos os métodos, exceto Exemplos\CPP.SelectionCriteria2.Example.dll - class22::method221, onde nenhuma proridade foi especificada. Por outras palavras, isto seria:

  • Exemplos\CPP.SelectionCriteria1.Example.dll - class11::method111, class11::method112, class12::method121
  • Exemplos\CPP.SelectionCriteria2.Example.dll - class21::method211.

NOTA que você pode usar "/select" em conjunto com outras opções de comando como "/list", "/listproperties" etc.

Orçamentos inteligentes

Você pode encontrar aspas inteligentes nos seus critérios de seleção se estiver a copiar um critério de seleção de um documento do Outlook ou do Word de volta para a linha de comandos. Você pode encontrar mais informações sobre o que são citações inteligentes em Citações inteligentes: O flagelo oculto do texto destinado ao consumo de computador

Não há uma maneira fácil de evitar aspas inteligentes - a melhor abordagem é excluir todas as " aspas duplas e " aspas simples nos critérios de seleção depois de copiá-las para o prompt de comando e redigitar a parte de aspas da consulta.

Há uma configuração de opções para desativá-los ao criar mensagens no Outlook. Digite "aspas inteligentes" na caixa de ajuda do Outlook para encontrar isso.

Seleção rápida baseada em nome

O TAEF permite uma seleção rápida com base no nome no prompt de comando usando o parâmetro de linha de comando '/name':

/name:<test name with wildcards>

é equivalente a:

/select:@Name='<test name with wildcards>'

Em outras palavras, agora você pode fornecer uma consulta de seleção com base no nome como:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Name='*::class11::*'"

mais rapidamente usando /name assim:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /name=*::class11::*

Observe que, se /name e /select forem fornecidos no prompt de comando, /name será ignorado e /select terá precedência.