Selezione
La creazione di test e il framework di esecuzione (TAEF) forniscono un meccanismo per eseguire o omettere in modo selettivo determinati test in base alle informazioni sui metadati fornite. La sezione seguente illustra vari esempi di come usare questo meccanismo di selezione con TE.exe.
È possibile eseguire TE.exe da una finestra del prompt dei comandi.
TE <test_binaries> [/select:<selection criteria>]
Questa sezione descrive l'opzione TE.exe /select:selection criteria . Per altre informazioni sulle TE.exe, vedere opzioni dei comandi TE.exe.
I criteri di selezione vengono applicati a livello globale a tutti i file binari di test indicati al prompt dei comandi. Si considerino due test_binaries: Examples\CPP. SelectionCriteria1.Example.dll ed esempi\CPP. SelectionCriteria2.Example.dll . Nell'esempio seguente vengono illustrate le proprietà o i metadati specificati ai vari livelli di questi test_binaries. È anche possibile ottenerlo specificando l'opzione /listproperties nella finestra del prompt dei comandi.
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
In altre parole, usando /listproperties in ognuno di questi test_binaries separatamente, si ottiene:
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 notare a questo punto che test_binaries sono elencati insieme al percorso completo e i nomi delle classi sono elencati come "Namespace::<ClassName>" nel caso di test_binaries nativo e "<Spazio dei nomi>.<><ClassName>" nel caso di test_binaries gestito. Analogamente, i nomi dei metodi di test sono elencati come "Namespace::<ClassName>::<TestMethodName>" nel caso di test_binaries nativo e "<Spazio dei nomi>.<><ClassName>.<TestMethodName>" nel caso di test_binaries gestito.
In altre parole, il nome completo di qualsiasi nome o funzione è ciò che viene salvato in te. Ciò consente di distinguere in modo univoco qualsiasi metodo. Ad esempio, se due classi hanno lo stesso nome del metodo, la qualifica della classe consente di selezionare in modo univoco il metodo a cui si è interessati. Verso questo termine, i criteri di selezione consentono di eseguire solo i test che soddisfano i criteri nel test_binaries specificato.
Nell'esempio precedente, ad esempio in Examples\Cpp.SelectionCriteria1.Example.dll, è possibile scegliere "Method111" in base a uno dei criteri di selezione seguenti:
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'"
È possibile scegliere di eseguire tutti i test contrassegnati con "Priorità" inferiore a 2 eseguendo:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority < 2"
Verrà eseguito solo Examples\CPP. SelectionCriteria1.Example.dll : "class11::method111" nell'esempio.
Se si desidera eseguire tutti i test in class11, è possibile usare la proprietà "Name" qualificata insieme alla corrispondenza con caratteri jolly per sceglierla come indicato di seguito:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll
/select:"@Name='*::class11::*'"
Quando si usano i criteri di selezione, è utile tenere presente alcuni aspetti:
- "and", "not" e "or" sono parole riservate e non fanno distinzione tra maiuscole e minuscole.
- I nomi e i valori delle proprietà dei metadati non fanno distinzione tra maiuscole e minuscole, ad esempio "C2" nell'esempio, corrisponderebbero a "c2" e "C2". Di conseguenza, se si dispone di una funzione con metadati "property" e un'altra con "Property" e i criteri di selezione cercano "PROPERTY", corrisponderebbe a entrambi.
- Il valore stringa nella stringa di query di selezione deve essere incluso tra virgolette singole. All'interno di un valore stringa nella query di selezione "?" è un carattere jolly singolo e "*" è 0 o più caratteri jolly.Within a string value in selection query "?" is a single wildcard character and "*" is 0 or more wildcard characters.
- Durante l'uso delle virgolette al prompt dei comandi, tenere presente le virgolette intelligenti quando si esegue la copia su una query di selezione. Se si copia su una query di selezione da un messaggio di posta elettronica di Outlook, è possibile che virgolette intelligenti accidentalmente e TAEF non sia in grado di analizzarlo. Digitare invece le virgolette.
Esaminiamo alcuni rapidi esempi di criteri di selezione composta e di cosa verrebbero eseguiti.
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=2"
Verrà eseguito:
- Esempi\CPP. SelectionCriteria2.Example.dll - classe21::method211
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=3"
Verrà eseguito:
- Esempi\CPP. SelectionCriteria1.Example.dll - classe11::method112
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='U3' oR @Priority=1"
Verrà eseguito:
- Esempi\CPP. SelectionCriteria1.Example.dll - classe11::method111
- Esempi\CPP. SelectionCriteria2.Example.dll - classe22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*)"
Eseguirà tutti i test in cui il valore BackwardsCompatibility non è stato specificato. Vedere gli elementi seguenti.
- Esempi\CPP. SelectionCriteria1.Example.dll - class11::method111, class12::method121
- Esempi\CPP. SelectionCriteria2.Example.dll - classe22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C*'"
eseguirà tutti i test in cui il valore proprietario inizia con "C" (senza distinzione tra maiuscole e minuscole). Di conseguenza, il comando precedente eseguirà tutti i test in Examples\CPP. SelectionCriteria1.Example.dll e tutti i test in Examples\CPP. SelectionCriteria2.Example.dll in classe21 (metodo211)
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*) OR (@Owner='C*' AND @BackwardsCompatibility='*XP*')"
eseguirà tutti i test in cui la proprietà BackwardsCompatibility non è specificata o, dove il nome del proprietario inizia con "C" e il valore indietroCompatibilty contiene XP. NOTA come vengono usate le parentesi "(" e ")" per specificare l'ordine di precedenza.
Nell'esempio questa operazione viene eseguita in modo selettivo:
- Esempi\CPP. SelectionCriteria1.Example.dll - class11::method111, class12::method121,
- Esempi\CPP. SelectionCriteria2.Example.dll - class21::method211, class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Owner='???'"
eseguirà solo i test con valore proprietario della proprietà contenente solo 3 caratteri.
Nell'esempio seguente corrisponderebbe a "C" ed eseguito solo:
- Esempi\CPP. SelectionCriteria1.Example.dll - classe12::method121
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority>=1"
Nota
Questo è un buon esempio di come usare ">=", "<=", ">" e "<" dove i valori di proprietà sono floatvalues.
In questo esempio verranno eseguiti tutti i metodi ad eccezione di Examples\CPP. SelectionCriteria2.Example.dll - classe22::method221, in cui non è stata specificata alcuna prorità. In altre parole, questa operazione verrebbe eseguita:
- Esempi\CPP. SelectionCriteria1.Example.dll - class11::method111, class11::method112, class12::method121
- Esempi\CPP. SelectionCriteria2.Example.dll - classe21::method211.
SI NOTI che è possibile usare "/select" insieme ad altre opzioni di comando, ad esempio "/list" "/listproperties" e così via.
Inglesi
È possibile riscontrare virgolette intelligenti nei criteri di selezione se si esegue la copia di un criterio di selezione da Outlook o un documento di Word al prompt dei comandi. È possibile trovare ulteriori informazioni sulle virgolette intelligenti sulle virgolette intelligenti: Il flagello nascosto di testo destinato all'utilizzo del computer
Non esiste un modo semplice per evitare virgolette intelligenti: l'approccio migliore consiste nell'eliminare tutte le virgolette doppie e le virgolette singole nei criteri di selezione dopo averlo copiato al prompt dei comandi e digitare nuovamente la parte delle virgolette della query.
È disponibile un'impostazione di opzioni per disattivarle durante la creazione di messaggi in Outlook. Digitare "virgolette intelligenti" nella casella della Guida di Outlook per trovarlo.
Selezione rapida basata su nome
TAEF consente una selezione rapida basata sul nome al prompt dei comandi usando il parametro della riga di comando '/name':
/name:<test name with wildcards>
Equivale a:
/select:@Name='<test name with wildcards>'
In altre parole, è ora possibile fornire una query di selezione in base al nome, ad esempio:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Name='*::class11::*'"
più rapidamente usando /name come segue:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /name=*::class11::*
Si noti che se al prompt dei comandi vengono forniti sia /nameche /select , /name viene ignorato e /select ha la precedenza.