Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozhraní TAEF (Test Authoring and Execution Framework) poskytuje mechanismus pro selektivní spuštění nebo vynechání určitých testů na základě zadaných informací o metadatech. Následující část popisuje různé příklady použití tohoto mechanismu výběru s TE.exe.
Z okna příkazového řádku můžete spustit TE.exe.
TE <test_binaries> [/select:<selection criteria>]
Tato část popisuje volbu TE.exe /select:výběrová kritéria. Další informace o TE.exenaleznete v tématu TE.exe Možnosti příkazu.
Kritéria výběru se použijí globálně na všechny testovací binární soubory, které byly zmíněny na příkazovém řádku. Podívejme se na dvě test_binaries: příklady\CPP.SelectionCriteria1.Example.dll a příklady\CPP.SelectionCriteria2.Example.dll . Následující příklad ukazuje vlastnosti nebo metadata zadané na různých úrovních v těchto test_binaries. Můžete to získat také zadáním možnosti /listproperties v okně příkazového řádku.
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
Jinými slovy, pomocí /listproperties na každém z těchto test_binaries samostatně získáte:
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
A:
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
V tomto okamžiku je důležité si uvědomit, že test_binaries jsou uvedeny spolu s úplnou cestou a názvy tříd jsou uvedeny jako "<OborNázvů>::<ClassName>" v případě nativních test_binaries a "<OborNázvů>.<ClassName>" v případě spravovaných test_binaries. Podobně jsou názvy testovacích metod uvedeny jako "<Obor názvů>::<ClassName>::<TestMethodName>" v případě nativních test_binaries a "<Obor názvů>.<ClassName>.<TestMethodName>" v případě spravovaných test_binaries.
Jinými slovy, plně kvalifikovaný název libovolného názvu nebo funkce je to, co je uloženo v te. To umožňuje jedinečně rozlišit jakoukoli metodu. Pokud mají například dvě třídy stejný název metody, pomůže kvalifikace třídy jedinečně vybrat metodu, kterou vás zajímá. Za tímto účelem pomáhají kritéria výběru spouštět pouze testy, které odpovídají vašim kritériím v daných test_binaries.
V předchozím příkladu řekněme v příkladech\Cpp.SelectionCriteria1.Example.dllmůžete zvolit metodu "Method111" podle některého z následujících kritérií výběru:
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'"
Spuštěním příkazu
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority < 2"
V uvedeném příkladu se spustí pouze Examples\CPP.SelectionCriteria1.Example.dll – "class11::method111".
Pokud chcete spustit všechny testy v rámci třídy 11, můžete použít kvalifikovanou vlastnost Name spolu s odpovídajícími zástupnými znaky a zvolit ji následujícím způsobem:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll
/select:"@Name='*::class11::*'"
Při použití kritérií výběru je potřeba mít na paměti několik věcí:
- "and", "not" a "or" jsou vyhrazená slova a nerozlišují malá a velká písmena.
- Názvy vlastností metadat a hodnoty jsou necitlivé na velikost písmen, například "C2" v příkladu by odpovídalo "c2" a "C2". ** Pokud tedy máte jednu funkci s metadaty "property" a jinou s metadaty "Property" a kritéria výběru hledají "PROPERTY", pak budou odpovídat oběma těmto funkcím.
- Řetězcová hodnota v řetězci dotazu výběru by měla být zahrnuta v jednoduchých uvozovkách. V řetězcové hodnotě v dotazu výběru "?" je jeden zástupný znak a *je 0 nebo více zástupných znaků.
- Při použití uvozovek na příkazovém řádku mějte na paměti inteligentní uvozovky, když kopírujete výběrový dotaz. Pokud zkopírujete výběrový dotaz z e-mailu Outlooku, mohou se objevit inteligentní uvozovky a TAEF ho nemusí být schopen analyzovat. Místo toho zadejte uvozovky.
Pojďme si projít několik příkladů kritérií pro složený výběr a co by realizovaly.
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=2"
Spustí se:
- Příklady\CPP.SelectionCriteria2.Example.dll – třída21::method211
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=3"
Spustí se:
- Příklady\CPP.SelectionCriteria1.Example.dll – třída11::metoda112
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='U3' oR @Priority=1"
Spustí se:
- Příklady\CPP.SelectionCriteria1.Example.dll - class11::method111
- Příklady\CPP.SelectionCriteria2.Example.dll – třída22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*)"
Spustí všechny testy, u kterých nebyla zadána hodnota Zpětné kompatibility. (Viz následující položky.)
- Příklady\CPP.SelectionCriteria1.Example.dll – třída11::method111, třída12::method121
- Příklady\CPP.SelectionCriteria2.Example.dll – třída22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C*'"
spustí všechny testy, ve kterých hodnota vlastníka začíná písmenem C (nerozlišuje velká a malá písmena). Předchozí příkaz tedy spustí všechny testy v příkladech\CPP.SelectionCriteria1.Example.dll and all tests in Examples\CPP.SelectionCriteria2.Example.dll pod třídou21 (to znamená method211).
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*) OR (@Owner='C*' AND @BackwardsCompatibility='*XP*')"
spustí všechny testy, ve kterých není zadána zpětná kompatibilita, nebo pokud jméno vlastníka začíná na "C" a zpětná hodnotaCompatibilty obsahuje XP. Všimněte si, jak se k určení pořadí priority používají závorky ((" a ").
V tomto příkladu se selektivně spustí:
- Příklady\CPP.SelectionCriteria1.Example.dll – třída11::method111, třída12::method121,
- Příklady\CPP.SelectionCriteria2.Example.dll – třída21::method211, třída22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Owner='???'"
spustí pouze testy, které mají vlastnost vlastníka s hodnotou obsahující pouze 3 znaky.
V našem příkladu by to odpovídalo "C" a spustilo se jenom:
- Příklady\CPP.SelectionCriteria1.Example.dll – třída12::method121
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority>=1"
Poznámka:
Toto je dobrý příklad použití ">=", "<=", "", ">" a "<" kde hodnoty vlastností jsou floatvalues.
V našem příkladu by se spustily všechny metody s výjimkou Examples\CPP.SelectionCriteria2.Example.dll – class22::method221, kde nebyla zadána žádná priorita. Jinými slovy, spustí se následující:
- Příklady\CPP.SelectionCriteria1.Example.dll – třída11::metoda111, třída11::metoda112, třída12::metoda121
- Příklady\CPP.SelectionCriteria2.Example.dll – třída21::method211.
Všimněte si, že můžete použít "/select" ve spojení s jinými možnostmi příkazů, jako je "/list" "/listproperties" atd.
Inteligentní uvozovky
Pokud kopírujete kritéria výběru z outlookového nebo wordového dokumentu zpátky na příkazový řádek, můžete v kritériích výběru narazit na inteligentní uvozovky. Další informace o tom, co znamenají inteligentní uvozovky, najdete v článku Inteligentní uvozovky: Skrytá pohroma textu určeného pro počítačové zpracování
Neexistuje žádný snadný způsob, jak se vyhnout chytrým uvozovkám – nejlepším přístupem je odstranit všechny dvojité a jednoduché uvozovky v kritériích výběru poté, co je zkopírujete do příkazového řádku, a napsat část dotazu s uvozovkami znovu.
Při vytváření zpráv v Outlooku je možné je vypnout. Zadáním "inteligentních uvozovek" do pole nápovědy Outlooku to najdete.
Rychlý výběr podle názvu
TaEF umožňuje rychlý výběr na základě názvu na příkazovém řádku pomocí parametru příkazového řádku /name:
/name:<test name with wildcards>
odpovídá:
/select:@Name='<test name with wildcards>'
Jinými slovy, teď můžete zadat výběrový dotaz na základě názvu, například:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Name='*::class11::*'"
rychleji pomocí parametru /name , například takto:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /name=*::class11::*
Všimněte si, že pokud jsou v příkazovém řádku zadány /name i /select, bude parametr /name ignorován a parametr /select bude mít přednost.