Ich habe eine Testmethode, die 2 Unter-Testmethoden aufruft. Beide Untermethoden sind datengesteuert aus einer XML-Datei. Wenn ich alle Submethoden ausführen, laufen sie gut und erfolgreich. Wenn ich jedoch Main Test Method (Aufrufer beider Untermethoden) ausführe, findet es TestContext.DataConnection und TestContext.DataRow als null.Komponententest TestContext Mehrere Aufrufe
private TestContext testContext;
public TestContext TestContext
{
get { return testContext; }
set { testContext = value; }
}
[TestMethod]
public void SaveEmpty_Json_LocalStorage()
{
// Testing JSON Type format export and save
SetWindowsUsers();
// Add Network Information
SetWifiInformation();
// More logic and assertions here.
// More logic and assertions here.
// More logic and assertions here.
}
[TestMethod]
[DeploymentItem("input.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
"input.xml",
"User",
DataAccessMethod.Sequential)]
public void SetWindowsUsers()
{
Console.WriteLine(TestContext.DataRow["UserName"].ToString())
// MORE LOGIC and Asserts
}
[TestMethod]
[DeploymentItem("input.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
"input.xml",
"WifiList",
DataAccessMethod.Sequential)]
public void SetWifiInformation()
{
Console.WriteLine(TestContext.DataRow["SSID"].ToString())
// MORE LOGIC and Asserts
}
Wenn ich alle starte, 2 Methoden bestanden und 1 fehlschlägt. Wenn ich einzeln ausführe, wird SaveData_Json_LocalStorage nicht bestanden, TestContext.DataRow wird immer als null abgerufen. Ist es in Ordnung, mehrere Methoden aufzurufen? Wie schreibt man am besten verkettete Testfälle?
Ich habe nie die 'DeploymentItem' und' DataSource' Attribute gesehen, aber ich bin ziemlich sicher, dass sie die Quelle Ihres Problems sind. Attribute machen eigentlich nichts alleine. Sie benötigen das Unit-Test-Framework, um etwas mit ihnen zu tun. (Richten Sie in diesem Fall Ihre Daten ein.) Wenn Sie 'SetWindowsUsers' und' SetWifiInformation' direkt aufrufen, wird diese attributbasierte Konfiguration nicht ausgeführt. –
Im Allgemeinen sollten Sie die Verkettung von Testfällen vermeiden. Es liegt am Test Runner, die Reihenfolge der Ausführung zu bestimmen. Verwenden Sie stattdessen eine allgemeine Setup-Methode für die Testfälle. – Henrik
@JasonWatkins Wenn ich SetWindowsUsers und SetWifiInformation direkt aufrufen, funktionieren beide Attribute "DataSource" und DeploymentItems gut und ich bekomme Daten aus XML und Test bestanden. Ich bekomme meine TestContext.DataRow nicht als null. Diese beiden Attribute sind ziemlich Standard und verwendet für Data Driven Testfälle – rocky