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.
Pravděpodobně existují scénáře, kdy kompletní testování založené na datech založených na XML a tabulkách může být pro potřeby testovacího scénáře příliš náročné. Testování založené na lehkých datech umožňuje rychlý a snadný způsob, jak získat podporu testování řízené daty, když jsou data pro váš test jednoduchá a dají se snadno vyjádřit jako metadata. Pojďme použít příklad a podívat se, jak na to.
Data pro lehký test řízený daty se vyjadřují jako sada metadat (na úrovni testu, třídy nebo modulu). Pro každou hodnotu v této sadě se pro každou hodnotu v sadě spustí testovací metody spolu s přidruženými metodami nastavení a odtržívání. Pojďme se podívat, jak ho vytvořit v nativním kódu:
1 #include "WexString.h"
2 #include "WexTestClass.h"
3
4 using namespace WEX::Common;
5 using namespace WEX::TestExecution;
6 using namespace WEX::Logging;
7 namespace WEX { namespace TestExecution { namespace Examples
8 {
9 class SimpleDataDrivenExample
10 {
11 TEST_CLASS(SimpleDataDrivenExample);
12 ...
13 BEGIN_TEST_METHOD(SetsOfDataTest)
14 TEST_METHOD_PROPERTY(L"Data:Color", L"{Purple, Maroon, Brown}")
15 END_TEST_METHOD()
16 };
Všimněte si hodnot parametrů pro TEST_METHOD_PROPERTY na řádku 14. Hodnota testovacích metadat začíná znakem {a končí znakem }, který označuje, že byl zadán čárka nebo středník oddělený seznam hodnot. TaEF znovu spustí testovací metodu, která se týká SetsOfDataTest() jednou pro každou hodnotu v této sadě.
Všimněte si také, že název metadat začíná na "Data:". To znamená, že sada metadat ve skutečnosti specifikuje varianty pro parametry testu řízené daty a byla by k dispozici pro skutečnou testovací metodu podobně jako parametry dat z testu založeného na tabulce, například takto:
11 ...
12
13 void SimpleDataDrivenExample::SetsOfDataTest()
14 {
15 String color;
16 if (SUCCEEDED(TestData::TryGetValue(L"color", color)))
17 {
18 Log::Comment(L"Color retrieved was " + color);
19 }
20 }
21 } /* namespace Examples */ } /* namespace TestExecution */ } /* namespace WEX */
Při práci se spravovaným kódem se specifikace a načtení datové sady podobá nativnímu příkladu. Pojďme se podívat:
1 namespace WEX.Examples
2 {
3 using Microsoft.VisualStudio.TestTools.UnitTesting;
4 using System;
5 using System.Collections;
6 using System.Data;
7 using WEX.Logging.Interop;
8 using WEX.TestExecution;
9
10 [TestClass]
11 public class CSharpDataDrivenSimpleExample
12 {
13 ...
14 [TestMethod]
15 [TestProperty("Data:Color", "{Red, Green, Blue}")]
16 public void SetsOfMetadataTest()
17 {
18 Log.Comment("Color is " + m_testContext.DataRow["Color"]);
19 }
20
21 public TestContext TestContext
22 {
23 get { return m_testContext; }
24 set { m_testContext = value; }
25 }
26
27 private TestContext m_testContext;
28 }
29 }
Stejně jako v případě testů založených na datech založených na tabulce umožňují sady dat zadaných jako metadata načtení přes TestContext.DataRow. Mějte na paměti, že aby byl test řízený daty lehký, typ parametru bude vždy WEX::Common::String (v nativním kódu) a String(ve spravovaném kódu).
Pokud je zadáno více hodnot dat, získá se kartézský součin všech možných hodnot a pro každou kombinaci se vyvolá testovací metoda.
Dále je možné mít některé sady metadat (například sady metadat ThreadingModel) a datové sady zadané pro stejnou testovací metodu. V takovém případě bude funkce TAEF vytvořit kombinatorické rozšíření všech sad metadat a datových sad a testovací metody, které se týkají, budou vyvolány s každou kombinací.
Speciální případy – test řízený daty se sadami metadat nebo dat
Testovací metodu můžete mít závislá na testech založených na datech založených na tabulce a také zadat sadu dat nebo metadat pro ni. Například testovací metoda může mít parametry "size" a "color" zadané v testu založeném na datech založených na tabulce a chcete, aby se všechny řádky spouštěly jednou s parametrem "průhlednost" nastaveným na true a pak na hodnotu false. V takovém případě lze jako sadu {true, false} pro test řízený daty zadat "transparentnost". Je důležité si uvědomit, že v případě konfliktů parametru v sadě metadat obsahuje řádek založený na datech založený na tabulce, typ a hodnota parametru na úrovni řádku přepíše hodnotu sady metadat.
Provádění testů pomocí sad dat / metadat
Provádění testů obsahujících sady dat je poměrně intuitivní. Podívejme se na výstup /listproperties pro naše ukázkové testy:
1 te Examples\CPP.DataDriven.Example.dll /name:*SetsOfDataTest* /listproperties
2
3 Test Authoring and Execution Framework v2.9.3k for x64
4
5 f:\ Examples\CPP.SimpleDataDriven.Example.dll
6 WEX::TestExecution::Examples::SimpleDataDrivenExample<
7 WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet0
8 Property[Data:Color] = {Purple, Maroon, Brown}
9
10 Data[Color] = Purple
11
12 WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet1
13 Property[Data:Color] = {Purple, Maroon, Brown}
14
15 Data[Color] = Maroon
16
17 WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet2
18 Property[Data:Color] = {Purple, Maroon, Brown}
19
20 Data[Color] = Brown
Všimněte si řádků 7, 12 a 17 v příkladu výše. Index sady metadat se připojí ke každému vyvolání testovací metody s hodnotou v sadě dat. Tento index je ve formuláři:
<namespace qualified test method name>#metadataSet<metadataIndex>
Řádky 8, 13 a 18 zobrazují sadu metadat, která byla zadána pro tuto podporu testování založeného na lehkých datech. V tomto případě se sada skládá z barev fialové, maroon a hnědé. Řádky 10, 15 a 20 zobrazují skutečnou hodnotu z této sady, která je aktivní pro aktuální vyvolání testu. V případě SetsOfMetadataTest#metadataSet1, druhé vyvolání této metody, aktivní hodnota parametru ze sady je "Maroon"
Můžete vybrat hodnotu nebo název dat stejně jako v tabulkových testech řízených daty. Můžete například vybrat SetsOfDataTest#metadataSet1 pomocí výběrového dotazu, jako je /select:@Data:Color='Maroon' nebo /name:*#metadataSet1
Pro rychlou referenci je výstup /listproperties z příkladu spravovaného testu zobrazený níže:
te Examples\CSharp.DataDriven.Example.dll /name:*SetsOfMetadataTest* /listproperties
Test Authoring and Execution Framework v2.9.3k for x64
f:\ Examples\CSharp.DataDrivenSimple.Example.dll
WEX.Examples.CSharpDataDrivenSimpleExample
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