Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Flera DataSources är användbara när du letar efter en combinatorial expansion av en eller flera DataSources (tabellbaserad DataSource, PICT-baserad DataSource eller WMI-baserad DataSource).
Det är av största vikt att skapa din testdesign för att effektivt använda den här funktionen. Låt oss se med hjälp av ett exempel varför det är så. Anta att du som en del av flera DataSource vill ange två tabellbaserade datakällor, en WMI-baserad DataSource och en PICT-baserad datakälla. För argumentets skull ska vi säga att den första tabellen har 4 rader, den andra har 5 rader, WMI-frågan returnerar 2 resultat och PICT DataSource genererade 6 kombinationer parvis. TAEF kommer att skapa en kombinatorisk utveckling av dessa uppsättningar parametrar. Det innebär att testmetoden i fråga anropas (4 X 5 X 2 X 6 =) 240 gånger! Att öka antalet anrop för testmetoden med varierande kombinationer av parametrar kan ge minskande resultat när det gäller testtäckning. Detta gör det viktigt att utforma testet med hjälp av flera DataSources med försiktighet och genom att väga ut andra alternativ. Följande är några punkter som du kanske vill ta hänsyn till:
- Kontrollera att det lägger till värde för att ha flera tabeller. Om du inte behöver dem separat kan du komma med en effektiv kombination av parametrar själv.
- Kontrollera om du kan använda en PICT-modellfil med begränsningar i stället för flera tabeller.
- Kontrollera om det finns ett värde i att omstrukturera testfallet till flera tester och associera delmängder från flera DataSources med varje nyskapat undertest.
Ange flera DataSources
Den viktigaste aspekten här är hur du anger DataSource. Nu ska vi ta en titt på kodfragmentet från våra interna och hanterade exempel.
Infödd
1 namespace WEX { namespace TestExecution { namespace Examples
2 {
3 class AdvancedDataDrivenTests
4 {
5 TEST_METHOD_SETUP(DataDrivenSetup);
6 TEST_METHOD_CLEANUP(DataDrivenCleanup);
7
8 TEST_CLASS(AdvancedDataDrivenTests)
9
10 BEGIN_TEST_METHOD(SecondTable)
11 TEST_METHOD_PROPERTY(L"DataSource", L"Table:AdvancedDataDrivenTests.xml#Table2;Table:CppTestLevelDataSource.xml#NestedTable")
12 END_TEST_METHOD()
13
14 BEGIN_TEST_METHOD(FirstTable)
15 TEST_METHOD_PROPERTY(L"DataSource", L"Table:AdvancedDataDrivenTests.xml#Table1;"
16 L"PICT:PictDataSource.txt;" L"WMI:SELECT Location FROM Win32_StartupCommand")
17 END_TEST_METHOD()
18 };
19 } /* namespace Examples */ } /* namespace TestExecution */ } /* namespace WEX */
Se raderna 11, 15 och 16 i exemplet ovan. I allmänhet är det mönster som ska följas för att ange DataSource en semikolonavgränsad lista över varje DataSource-specifikation. Specifikationen skulle också se mycket lik ut i hanterad kod.
Managerade
[TestMethod]
[DataSource(@"Table:CSharpAdvancedDataDrivenTests.xml#FirstTable;
WMI:SELECT ProcessId FROM Win32_Service WHERE Name='Themes'")]
public void First()
{
Log.Comment("In CSharpAdvancedDataDrivenTests.First");
String[] shapes = m_testContext.DataRow["Shape"] as String[];
foreach (String shape in shapes)
{
Console.WriteLine("The shape is " + shape);
}
Int32[] lengths = m_testContext.DataRow["Length"] as Int32[];
foreach (int length in lengths)
{
Console.WriteLine("The length is " + length.ToString());
}
String description = (String)m_testContext.DataRow["Description"];
Boolean desktopInteract = (Boolean)m_testContext.DataRow["DesktopInteract"];
UInt32 processId = (UInt32)m_testContext.DataRow["ProcessId"];
Log.Comment("Themes service is running on process " + processId.ToString());
Log.Comment("Themes service description: " + description);
}
Exemplen visar också hur du anger flera DataSources på flera rader. Naturligtvis kunde du ha angett DataSource på en enda rad (som visas nedan), men du kan förbättra läsbarheten avsevärt med hjälp av ovanstående konstruktioner.
Ange DataSource på en enda rad
[DataSource("Table:CSharpAdvancedDataDrivenTests.xml#FirstTable;WMI:SELECT ProcessId FROM Win32_Service WHERE Name='Themes'")]
Bara för att upprepa: testmetoden körs en gång för varje n-sätts kombinatoriska expansion av datauppsättningar som genereras av varje enskild DataSource. Till exempel för ovanstående hanterade exempel, förutsatt att det bara finns en Teman-tjänst som körs och vet att det finns 3 rader i tabellens datakälla som tillhandahålls, kommer testmetoden att anropas 3 gånger (1 X 3). I det interna exempelfallet finns det två angivna datakällor i SecondTable-testmetoden. Den första tabellen innehåller 3 rader och den andra tabellen innehåller 4 rader. Därför anropas testmetoden 12 gånger (3 X 4).
Begränsningar som gäller när du anger flera datakällor
Begränsningarna gäller endast när du vill ange en tabellbaserad datakälla i flera DataSource-specifikationer. Table DataSource måste anges som Tabell:<relativ sökväg till XML-fil>#<TableId>. Om TAEF upptäcker att "TableId" tillhandahålls som separat metadata, kommer den att anta att DataSource är en enda tabellbaserad DataSource och fortsätter.