Mam metodę testową, która wywołuje 2 metody testu dodatkowego. Obie metody podrzędne to dane kierowane z pliku XML. Jeśli uruchomię każdą z metod sub, działają dobrze i pomyślnie. Jednak po uruchomieniu głównej metody testowej (wywołującej obie metody podrzędne) odnajduje TestContext.DataConnection i TestContext.DataRow jako null.Test jednostek TestContext Wiele połączeń
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
}
Jeśli uruchomię wszystkie, 2 metody zostaną zaliczone, a 1 zakończy się niepowodzeniem. Jeśli uruchamiam pojedynczo, SaveData_Json_LocalStorage nie przechodzi, zawsze pobiera wartość TestContext.DataRow jako null. Czy można wzywać wielu metod w środku? Jaki jest najlepszy sposób pisania przykutych przypadków testowych.
Nigdy nie widziałem atrybutów 'DeploymentItem' i' DataSource', ale jestem prawie pewien, że są one źródłem problemu. Atrybuty w rzeczywistości nic nie robią same. Potrzebujesz szkieletu testów jednostkowych, aby coś z nimi zrobić. (Skonfiguruj swoje dane w tym przypadku.) Kiedy wywołasz 'SetWindowsUsers' i' SetWifiInformation' bezpośrednio, ta konfiguracja oparta na atrybutach nie jest wykonywana. –
Generalnie powinieneś unikać testowania przypadków testowych. To od testującego może zależeć kolejność wykonania. Zamiast tego użyj ogólnej metody konfiguracji przypadków testowych. – Henrik
@JasonWatkins Kiedy wywołuję SetWindowsUsers i SetWifiInformation bezpośrednio, Oba atrybuty "DataSource" i DeploymentItems działa dobrze i otrzymuję dane z XML i Test przekazać. Nie dostaję mojego TestContext.DataRow jako null. Te dwa atrybuty są dość standardowe i stosowane w przypadku testów sterowanych danymi. – rocky