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.
Tato část popisuje několik příkladů testování řízeného daty a popisuje konkrétní funkce v každém příkladu.
Prvním příkladem je základní test řízený daty, který se nazývá SimpleDataDrivenExample.
Ve spravovaném příkladu najdete soubor XML, který vypadá takto:
1 <?xml version="1.0"?>
2 <Data>
3 <Table Id="Table1">
4 <ParameterTypes>
5 <ParameterType Name="Size">Int32</ParameterType>
6 <ParameterType Name="Color">String</ParameterType>
7 </ParameterTypes>
8 <Row>
9 <Parameter Name="Size">4</Parameter>
10 <Parameter Name="Color">White</Parameter>
11 </Row>
12 <Row>
13 <Parameter Name="Size">10</Parameter>
14 <Parameter Name="Color">Black</Parameter>
15 </Row>
16 <Row>
17 <Parameter Name="Size">9</Parameter>
18 <Parameter Name="Color">Orange</Parameter>
19 </Row>
20 <Row>
21 <Parameter Name="Size">9</Parameter>
22 <Parameter Name="Color">Blue</Parameter>
23 </Row>
24 </Table>
25 </Data>
Tento soubor XML definuje datové parametry pro náš datově řízený test ke spotřebě. Horní uzel XML je <značka Data> , která může obsahovat jednu nebo více <značek tabulky> definovaných v něm. Každá tabulka musí být přidružená k jedinečnému atributu "ID". Testovací funkce používají hodnotu ID tabulky k identifikaci konkrétní tabulky, kterou budou používat v souboru XML.
<Ve značce Tabulka> máte volitelný <oddíl ParameterTypes>. Tady můžete explicitně zadat datový typ pro daný parametr pomocí <značek ParameterTypes> . V předchozím příkladu explicitně zadáte, že parametr Size má typ Int32 a parametr Color je řetězec. Shrnutí: Oddíl ParameterTypes je volitelný. Pokud nejsou zadané informace o typu parametru, uloží se ve výchozím nastavení jako řetězec.
Pokud porovnáte spravované a nativní příklady, všimněte si, že jediným rozdílem mezi těmito dvěma typy je <blok ParameterTypes> . Nativní soubor XML specifikuje, že Size je nativního celočíselného typu "int" a používá jako výchozí typ WEX::Common::String pro Color, protože ho nespecifikuje. Pro usnadnění vašeho pohodlí následující příklad ukazuje soubor XML z nativního příkladu.
1 <?xml version="1.0"?>
2 <Data>
3 <Table Id="SimpleTable">
4 <ParameterTypes>
5 <ParameterType Name="Size">int</ParameterType>
6 </ParameterTypes>
7 <Row>
8 <Parameter Name="Size">4</Parameter>
9 <Parameter Name="Color">White</Parameter>
10 </Row>
11 <Row>
12 <Parameter Name="Size">10</Parameter>
13 <Parameter Name="Color">Black</Parameter>
14 </Row>
15 <Row>
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>
Typy parametrů podporované v nativním a spravovaném kódu jsou uvedeny v typech parametrů ve zdrojích dat tabulky.
Pokud je zadán jakýkoli jiný datový typ, test vyvolá upozornění a považuje ho za řetězec.
Pokračujte zpět se soubory XML po <bloku ParameterTypes> v obou souborech XML máte identickou sadu <řádků>, které každý odpovídá jedné sadě dat v našich spravovaných i nativních příkladech. V tomto konkrétním případě máte 4 sady dat definované pomocí 4 <bloků řádků> , z nichž každý určuje hodnoty parametrů pomocí <značek Parametr> .
To zahrnuje základní základy různých částí souboru zdroje dat. Teď se podíváme, jak můžete načíst hodnoty, které jste zadali ve výše uvedeném souboru XML.
Vytvoření testu jako testu řízeného daty
Teď, když jsou data zadána, potřebujete způsob, jak přidružit kód nebo testovací metodu, která bude využívat data s daty v souboru XML. Uděláte to – v spravovaných i nativních příkladech – zadáním metadat "DataSource" . Metadata Zdroje dat mají tři části:
- Tabulka:" – identifikuje zdroj dat jako tabulku XML.
- 'DataDrivenTests.xml' - to je soubor, který obsahuje tabulku XML.
- '#Table2' - Po delimetru '#' hodnota 'Table2' identifikuje konkrétní tabulku v dokumentu XML, který se má použít. Jeden zdroj dat tabulky XML může obsahovat více tabulek. TAEF prohledá soubor XML pro element Table s atributem 'Id', který odpovídá zadané hodnotě.
Znovu se pojďme rychle podívat na kód, který se zabývá výše uvedenými aspekty.
Nativní kód
1 class SimpleDataDrivenExample
2 {
3 BEGIN_TEST_CLASS(SimpleDataDrivenExample)
4 TEST_CLASS_PROPERTY(L"Description", L"Simple example in table-based data-driven tests")
5 END_TEST_CLASS()
6
7 TEST_METHOD_CLEANUP(TestCleanup);
8 TEST_METHOD_SETUP(TestSetup);
9
10 BEGIN_TEST_METHOD(DataDrivenTest)
11 TEST_METHOD_PROPERTY(L"DataSource", L"Table:SimpleDataDrivenExample.xml#SimpleTable")
11 END_TEST_METHOD()
12 ...
Spravovaný kód
1 [TestMethod]
2 [DataSource("Table:CSharpDataDrivenSimpleExample.xml#SimpleTable")]
3 public void DataDrivenTest()
4 {
5 ...
6 }
"DataSource" je známá vlastnost v Microsoft.VisualStudio.TestTools.UnitTesting.
Kromě výše uvedených kroků potřebujete několik dalších kroků pro testy řízené daty ve spravovaném kódu. Musíte také definovat soukromou vlastnost TestContext. Další informace naleznete v TestContext Class. Také definujete veřejné hodnotitele pro tuto vlastnost. Interně TAEF nastaví tuto vlastnost TestContext, abyste prostřednictvím ní měli přístup k datům. Pojďme se rychle podívat na tuto část kódu:
1 public TestContext TestContext
2 {
3 get;
4 set;
5 }
Načítání dat v metodě Test
Rozhraní API pro načítání se liší ve spravovaném a nativním kódu. Začněme pochopením nativního rozhraní API pro načítání:
1 void SimpleDataDrivenExample::DataDrivenTest()
2 {
3 int size;
4 if (SUCCEEDED(TestData::TryGetValue(L"size", size)))
5 {
6 VERIFY_ARE_NOT_EQUAL(size, 0);
7 Log::Comment(String().Format(L"Size retrieved was %d", size));
8 }
9
10 String color;
11 if (SUCCEEDED(TestData::TryGetValue(L"color", color)))
12 {
13 Log::Comment(L"Size retrieved was " + color);
14 }
15
16 unsigned int index;
17 if (SUCCEEDED(TestData::TryGetValue(L"index", index)))
18 {
19 Log::Comment(String().Format(L"At index %d", index));
20 }
21 }
Věnujte zvláštní pozornost řádkům 4, 11 a 17. Před každým z těchto řádků definujte místní proměnnou pro uložení dat, která načtete. Je důležité správně určit typ. Vzhledem k tomu, že jste v souboru XML definovali "Velikost" jako typ "int", musíte definovat místní proměnnou typu int, do které se má načíst. Rozhraní API pro načítání přijímá jako svůj první parametr název parametru, který má být načten, ve formátu String. Druhým parametrem je místní proměnná předaná odkazem a nastavená kódem TAEF.
Toto rozhraní API pro načítání je definováno v souboru TestData.h a obsahuje hlavičku WexTestClass.h, kterou zahrnují všechny testy TAEF.
Pokud chcete načíst data ve spravovaném kódu, použijte vlastnost TestContext, kterou jste definovali. Podívejte se na následující kód (nebo v příkladu):
1 public void DataDrivenTest()
2 {
3 int size = (int)m_testContext.DataRow["Size"];
4 Verify.AreNotEqual(size, 0);
5 Log.Comment("Size is " + size.ToString());
6
7 Log.Comment("Color is " + m_testContext.DataRow["Color"]);
8 UInt32 index = (UInt32)m_testContext.DataRow["Index"];
9 Log.Comment("At index " + index.ToString());
10 }
Pokud znáte VSTS, zjistíte, že výše uvedený příklad je podobný. Použijte DataRow a jako název parametru, který se pokoušíte načíst, zadejte název sloupce.
Pokud se podíváte do příkladu, existuje ve stejné třídě také test, který není řízený daty. Jinými slovy, máte flexibilitu kombinování testů DataDriven a NonDataDriven ve stejné testovací třídě.
Spuštění SimpleDataDrivenExample s TAEF
Než začnete s tipy a triky spouštění testů DataDrivenTests pomocí taEF, nezapomeňte si uvědomit, jak vytvářet testy řízené daty a jak provádět testy pomocí taEF. Může být užitečné osvěžit si paměť ohledně toho, jak výběr funguje s TAEF.
Příkazový řádek pro spouštění testů řízených daty se nijak neliší od provádění obecného testu pomocí taEF. Pokud chcete spustit oba příklady (nativní i spravované), které jsou popsané výše, spusťte následující příkaz:
PříkladyTE.exe\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /name:*Simple*
/name přidá kritéria výběru na základě názvu a zvolí pouze třídy, které vás zajímají. Chcete-li vybrat testy, které mají být provedeny ze tříd, měli byste nejprve uvést všechny vlastnosti DLL. Pak se můžete rozhodnout, které vlastnosti se mají použít pro kritéria výběru.
TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /name:*Simple* /listproperties
f:\Examples\CPP.DataDriven.Example.dll
WEX::TestExecution::Examples::SimpleDataDrivenExample
Property[Description] = Simple example in table-based data-driven tests
WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#0
Setup: TestSetup
Teardown: TestCleanup
Property[DataSource] = Table:SimpleDataDrivenExample.xml#SimpleTable
Data[Color] = White
Data[Size] = 4
WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#1
Setup: TestSetup
Teardown: TestCleanup
Property[DataSource] = Table:SimpleDataDrivenExample.xml#SimpleTable
Data[Color] = Black
Data[Size] = 10
WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#2
Setup: TestSetup
Teardown: TestCleanup
Property[DataSource] = Table:SimpleDataDrivenExample.xml#SimpleTable
Data[Color] = Orange
Data[Size] = 9
WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#3
Setup: TestSetup
Teardown: TestCleanup
Property[DataSource] = Table:SimpleDataDrivenExample.xml#SimpleTable
Data[Color] = Blue
Data[Size] = 9
WEX::TestExecution::Examples::SimpleDataDrivenExample::FirstNonDataDrivenTest
Setup: TestSetup
Teardown: TestCleanup
WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet0
Setup: TestSetup
Teardown: TestCleanup
Property[Data:Color] = {Purple, Maroon, Brown}
Data[Color] = Purple
WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet1
Setup: TestSetup
Teardown: TestCleanup
Property[Data:Color] = {Purple, Maroon, Brown}
Data[Color] = Maroon
WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet2
Setup: TestSetup
Teardown: TestCleanup
Property[Data:Color] = {Purple, Maroon, Brown}
Data[Color] = Brown
WEX::TestExecution::Examples::SimpleDataDrivenExample::SecondNonDataDrivenTest
Setup: TestSetup
Teardown: TestCleanup
f:\Examples\CSharp.DataDriven.Example.dll
WEX.Examples.CSharpDataDrivenSimpleExample
Setup: MyClassInitialize
Property[Description] = Simple example in table-based data-driven tests
WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#0
Property[DataSource] = Table:CSharpDataDrivenSimpleExample.xml#SimpleTable
Data[Color] = White
Data[Size] = 4
WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#1
Property[DataSource] = Table:CSharpDataDrivenSimpleExample.xml#SimpleTable
Data[Color] = Black
Data[Size] = 10
WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#2
Property[DataSource] = Table:CSharpDataDrivenSimpleExample.xml#SimpleTable
Data[Color] = Orange
Data[Size] = 9
WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#3
Property[DataSource] = Table:CSharpDataDrivenSimpleExample.xml#SimpleTable
Data[Color] = Blue
Data[Size] = 9
WEX.Examples.CSharpDataDrivenSimpleExample.NonDataDrivenTest
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet0
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Red
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet1
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Green
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet2
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Blue
Prozatím ignorujme SetsOfMetadataTest a SetsOfDataTest uvedené výše. Pokud vás to zajímá, přečtěte si další informace o testování založeném na lehkých datech. Teď, když znáte různé vlastnosti a název a hodnoty parametru Data, můžete na základě toho vybrat konkrétní testy. Vyzkoušejte si je a postupujte podle pokynů a potvrďte, co vyberete.
Pokud chcete spustit pouze testy, které nejsou řízené daty, spusťte:
TE.exe Příklady\CSharp.DataDriven.Example.dll Examples\CPP.DataDriven.Example.dll /select:"@Name='*Simple*' And not(@DataSource=*)"
Teď, pokud chcete spustit pouze ty testy řízené daty, kde je barva určená jako černá, spusťte:
TE.exe Příklady\CSharp.DataDriven.Example.dll Examples\CPP.DataDriven.Example.dll /select:"@Name='*Simple*' And @Data:Color='Black'"
Stejně jako jste to udělali s barvou, @Data:<DataDrivenParameterName>=<DataDrivenParameterValue> spustí konkrétní data na základě zadané hodnoty parametru DataDriven. V předchozím případě spustí WEX::TestExecution::Examples::SimpleDataDrivenExample::DataDrivenTest#1 a WEX.Examples.CSharpDataDrivenSimpleExample.DataDrivenTest#1
Všimněte si testovacích indexů v seznamu vlastností výše. Výše uvedené možnosti můžete vybrat také na základě indexu.
TE.exe Příklady\CSharp.DataDriven.Example.dll Examples\CPP.DataDriven.Example.dll /select:"@Name='*Simple*' And @Data:Index=1"
Výše uvedené spustí stejné dva testy, které byly vybrány pod názvem @Data:Color=Black. Do výběru indexu můžete dokonce přidat stráže pomocí @Data:Index > lowerGuardValue a @Data:index< upperGuardValue.
Pokud rozumíte základům testování řízeného daty pomocí TAEF, sledujte další lekci pomocí stejných příkladů: Přepsání metadat na úrovni řádku a určení typů parametrů pole.