Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Er zijn waarschijnlijk scenario's waarin een volledig op XML DataSource en Tabel gebaseerd gegevensgestuurd testen te zwaar kan zijn voor uw testscenariobehoeften. Lichtgewicht gegevensgestuurde tests bieden een snelle en eenvoudige manier om ondersteuning voor gegevensgestuurde tests te krijgen wanneer de gegevens voor uw test eenvoudig zijn en eenvoudig kunnen worden uitgedrukt als metagegevens. Laten we een voorbeeld gebruiken en zien hoe.
De gegevens voor de lichtgewicht gegevensgestuurde test worden uitgedrukt als een set metagegevens (op test-, klasse- of moduleniveau). Voor elk van de waarden in deze set worden de testmethoden in kwestie, samen met de bijbehorende installatie- en teardown-methoden uitgevoerd voor elke waarde in de set. Laten we eens kijken hoe u dit ontwerpt in systeemeigen code:
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 };
Let op de parameterwaarden voor TEST_METHOD_PROPERTY in regel 14. De waarde van de testmetagegevens begint met een {en eindigt met een '}' die aangeeft dat er een door komma's of puntkomma's gescheiden lijst met waarden is opgegeven. TAEF voert de testmethode in kwestie opnieuw uit, SetsOfDataTest() eenmaal voor elke waarde in deze set.
U ziet ook dat de naam van de metagegevens begint met een 'Gegevens:'. Dit impliceert dat de metagegevensset echt variaties opgeeft voor de gegevensgestuurde testparameters en beschikbaar is voor de daadwerkelijke testmethode, net zoals gegevensparameters van een op tabellen gebaseerde gegevensgestuurde test:
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 */
Tijdens het werken met beheerde code is de specificatie en het ophalen van gegevenssets vergelijkbaar met het systeemeigen voorbeeld. Laten we eens kijken:
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 }
Net als in het geval van op tabellen gebaseerde gegevensgestuurde tests kunnen sets met gegevens die zijn opgegeven als metagegevens, ophalen via TestContext.DataRow mogelijk. Houd er rekening mee dat om het lichtgewicht van de gegevensgestuurde test te behouden, het parametertype altijd WEX::Common::String (in systeemeigen code) en String(in beheerde code)
Als er meerdere gegevenswaarden zijn opgegeven, wordt een cartesisch product van alle mogelijke waarden verkregen en wordt de testmethode voor elke combinatie aangeroepen.
Het is verder mogelijk om enkele metagegevenssets (zoals ThreadingModel-metagegevenssets) en gegevenssets te laten opgeven die zijn opgegeven voor dezelfde testmethode. In dat geval wordt een combinatoriële uitbreiding van alle metagegevenssets en gegevenssets geproduceerd door TAEF en worden de betrokken testmethoden met elke combinatie aangeroepen.
Speciale gevallen: gegevensgestuurde test met een reeks metagegevens of gegevens
U kunt een testmethode hebben die afhankelijk is van een gegevensgestuurde test op basis van tabellen en een set gegevens of metagegevens opgeven. Een testmethode kan bijvoorbeeld parameters 'grootte' en 'kleur' bevatten die zijn opgegeven in de gegevensgestuurde test op basis van de tabel en alle rijen moeten eenmaal worden uitgevoerd met de parameter 'transparantie' ingesteld op waar en vervolgens ingesteld op onwaar. In dat geval kan 'transparantie' worden opgegeven als een set {true, false} voor de gegevensgestuurde test. Het is belangrijk te weten dat in het geval van conflicten met parameters in een tabel met metagegevenssets op basis van gegevensgestuurde rij, het parametertype en de waarde op rijniveau de waarde van de metagegevensset overschrijft.
Tests uitvoeren met sets gegevens/metagegevens
Het uitvoeren van tests met gegevenssets is vrij intuïtief. Laten we eens kijken naar de uitvoer van /listproperties voor onze voorbeeldtests:
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
Let op regels 7, 12 en 17 in het bovenstaande voorbeeld. Een index voor metagegevenssets wordt toegevoegd aan elke aanroep van de testmethode met de waarde in de gegevensset. Deze index heeft de volgende notatie:
<namespace qualified test method name>#metadataSet<metadataIndex>
In regel 8, 13 en 18 ziet u de metagegevensset die is opgegeven voor deze lichtgewicht gegevensgestuurde testondersteuning. In dit geval bestaat de set uit kleuren paars, maroen en bruin. In regel 10, 15 en 20 wordt de werkelijke waarde uit deze set weergegeven die actief is voor de huidige aanroep van de test. In het geval van SetsOfMetadataTest#metadataSet1, de tweede aanroep van deze methode, is de actieve parameterwaarde uit de set 'Maroon'
U kunt de gegevenswaarde of naam op dezelfde wijze selecteren als in gegevensgestuurde tests op basis van tabellen. U kunt bijvoorbeeld SetsOfDataTest#metadataSet1 selecteren door een selectiequery zoals /select:@Data:Color='Maroon' of /name:*#metadataSet1
Voor snelzoekgids ziet u uitvoer van /listproperties uit het voorbeeld van de beheerde test hieronder:
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