Porady: tworzenie testu jednostkowego opartego na danych
Za pomocą struktury testowej jednostki Microsoft kodu zarządzanego, należy zdefiniować metodę badania jednostki do pobierania wartości używane w metodzie badania ze źródła danych.Metoda jest wykonywane kolejno dla każdego wiersza w źródle danych, który ułatwia testowanie różnych danych wejściowych przy użyciu jednej metody.
Ten temat zawiera następujące sekcje:
Tworzenie testu jednostki o zmiennych danych obejmuje następujące etapy:
Utwórz źródło danych, które zawiera wartości, które można użyć w metodzie badania.Źródła danych mogą być dowolnego typu, który jest zarejestrowany na komputerze, który uruchamia test.
Dodawanie prywatnej TestContext pola i publicznego TestContext właściwości klasy testowej.
Utwórz metodę badania jednostki i dodać DataSourceAttribute atrybutu do niego.
Użyj DataRow właściwość indeksująca do pobrania wartości używanych w badaniu.
Metoda badania w obszarze
Na przykład załóżmy, że utworzyliśmy:
Rozwiązania o nazwie MyBank który akceptuje i przetwarzania transakcji dla różnych typów kont.
Projekt w MyBank o nazwie BankDb który zarządza transakcji dla konta.
Klasa o nazwie Maths w DbBank projektu, który wykonuje funkcji matematycznych do zapewnienia, że każdą transakcję jest korzystne dla banku.
Jednostka przetestować projekt o nazwie BankDbTests do testowania zachowania BankDb składnika.
Jednostka badań klasy o nazwie MathsTests , aby sprawdzić działanie Maths klasy.
Firma Microsoft będzie badanie metody w Maths , dodaje dwie liczby całkowite użycie pętli:
public int AddIntegers(int first, int second)
{
int sum = first;
for( int i = 0; i < second; i++)
{
sum += 1;
}
return sum;
}
Tworzenie źródła danych
Aby przetestować AddIntegers metody, możemy utworzyć źródło danych, która określa zakres wartości dla parametrów i przewidywaną zwrócone sumy.W naszym przykładzie tworzymy bazy danych Sql CD o nazwie MathsData i tabela o nazwie AddIntegersData zawierający następujące nazwy kolumn i wartości
FirstNumber |
SecondNumber |
Suma |
---|---|---|
0 |
1 |
1 |
1 |
1 |
2 |
2 |
-3 |
-1 |
Dodawanie TestContext do klasy badania
Tworzy struktury testowej jednostki TestContext obiektu do przechowywania informacji źródła danych dla badań opartych na danych.Następnie ustawia ten obiekt jako wartość w ramach TestContext właściwość, która tworzymy.
private TestContext testContextInstance;
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
W metodę badania można dostępu do danych za pośrednictwem DataRow właściwości indeksatora TestContext.
Pisanie metody badania
Metoda badania AddIntegers jest dość prosty.Dla każdego wiersza w źródle danych, nazywamy AddIntegers z FirstNumber i SecondNumber kolumny wartości parametrów, jak i sprawdzeniu wartości zwracanej przeciwko Suma wartość kolumny:
[DataSource(@"Provider=Microsoft.SqlServerCe.Client.4.0; Data Source=C:\Data\MathsData.sdf;", "Numbers")]
[TestMethod()]
public void AddIntegers_FromDataSourceTest()
{
var target = new Maths();
// Access the data
int x = Convert.ToInt32(TestContext.DataRow["FirstNumber"]);
int y = Convert.ToInt32(TestContext.DataRow["SecondNumber"]);
int expected = Convert.ToInt32(TestContext.DataRow["Sum"]);
int actual = target.IntegerMethod(x, y);
Assert.AreEqual(expected, actual,
"x:<{0}> y:<{1}>",
new object[] {x, y});
}
Należy zauważyć, że Assert metoda zawiera komunikat, który wyświetla x i y wartości iteracji nie powiodło się.Domyślnie wartości podnoszonego expected i actual, znajdują się już w szczegółowych badań nie powiodło się.
Określanie DataSourceAttribute
DataSource Atrybut określa ciąg połączenia dla źródła danych i nazwę tabeli, którego można używać w metodzie badania.Dokładne informacje w ciągu połączenia różni się w zależności od tego, jakiego rodzaju źródła danych jest używany.W tym przykładzie mamy używane bazy danych SqlServerCe.
[DataSource(@"Provider=Microsoft.SqlServerCe.Client.4.0;Data Source=C:\Data\MathsData.sdf", "AddIntegersData")]
Atrybut źródła danych ma trzy konstruktorów.
[DataSource(dataSourceSettingName)]
Konstruktor z jednego parametru używa informacji o połączeniu, są przechowywane w pliku app.config dla roztworu.DataSourceSettingsName jest nazwą elementu Xml w pliku konfiguracyjnego, który określa informacje o połączeniu.
Plik app.config pozwala zmienić lokalizację źródła danych bez wprowadzania zmian do testu jednostki.Aby uzyskać informacje na temat tworzenia i używania pliku app.config ZobaczInstruktaż: Użycie pliku konfiguracyjnego, aby zdefiniować źródło danych
[DataSource(connectionString, tableName)]
DataSource Konstruktora z dwóch parametrów określa ciąg połączenia dla źródła danych i nazwę tabeli, która zawiera dane dla metody badania.
Ciągi połączeń zależą od typu Typ źródła danych, ale powinna zawierać element dostawcy, który określa nazwę niezmienny dostawcy danych.
[DataSource(
dataProvider,
connectionString,
tableName,
dataAccessMethod
)]
Dostęp do danych przy użyciu TestContext.DataRow
Dostęp do danych w AddIntegersData tabeli, użyj TestContext.DataRow indeksatora.DataRowjest DataRow obiektu, co możemy pobieranie wartości w kolumnie nazw indeksu lub kolumny.Ponieważ wartości są zwracane jako obiekty, należy przekonwertować je na odpowiedni typ:
int x = Convert.ToInt32(TestContext.DataRow["FirstNumber"]);
Uruchamianie testu i wyświetlanie wyników
Po zakończeniu pisania metoda badania Skompiluj projekt badania.Metoda badania pojawia się w oknie Eksploratora badania w Badań nie uruchomić grupy.Jak uruchomić, zapisu i ponownie uruchom testy Test Explorer wyświetla wyniki w grupach Failed testów, Przekazany testów, i Badań nie uruchomić.Można wybrać Uruchomić wszystkie wszystkie testy, lub wybierz Uruchom... Aby wybrać podzbiór testów do uruchomienia.
Pasek wyników badania na górze Eksploratora jest animowany, jak działa taki test.Na końcu badania pasek będzie zielony, jeśli wszystkie testy przeszły lub czerwonego Jeżeli którekolwiek z badań.Podsumowanie przebieg testu pojawia się w okienku szczegółów u dołu okna Eksploratora badania.Wybierz przycisk Testuj, aby wyświetlić szczegóły tego testu w dolnym okienku.
W przypadku uruchomienia AddIntegers_FromDataSourceTest metody w naszym przykładzie czerwony pasek wyników i metoda badania jest przenoszona do Failed testów badań opartych na danych kończy się niepowodzeniem, jeśli źródło iterowany metod z danych kończy się niepowodzeniem.Po wybraniu nieudane badań opartych na danych w oknie Eksploratora przetestować okienko szczegółów wyświetla wyniki każdej iteracji, identyfikowaną przez indeks wiersza danych.W naszym przykładzie, wydaje się, że AddIntegers algorytm nie obsługuje poprawnie wartości ujemne.
Gdy metoda badanego jest poprawiany i test, uruchom ponownie, zmieni kolor na zielony pasek wyników i metoda badania jest przenoszona do Przekazany Test grupy.
Zobacz też
Informacje
Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute
Microsoft.VisualStudio.TestTools.UnitTesting.TestContext
Microsoft.VisualStudio.TestTools.UnitTesting.Assert
Koncepcje
Sprawdzanie kodu za pomocą jednostki badań
Jednostki badań na piśmie.NET Framework z struktury testowej jednostki Microsoft kodu zarządzanego