Udostępnij za pośrednictwem


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:

  1. 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.

  2. Dodawanie prywatnej TestContext pola i publicznego TestContext właściwości klasy testowej.

  3. Utwórz metodę badania jednostki i dodać DataSourceAttribute atrybutu do niego.

  4. 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:

  1. Rozwiązania o nazwie MyBank który akceptuje i przetwarzania transakcji dla różnych typów kont.

  2. Projekt w MyBank o nazwie BankDb który zarządza transakcji dla konta.

  3. Klasa o nazwie Maths w DbBank projektu, który wykonuje funkcji matematycznych do zapewnienia, że każdą transakcję jest korzystne dla banku.

  4. Jednostka przetestować projekt o nazwie BankDbTests do testowania zachowania BankDb składnika.

  5. 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ę.

ms182527.collapse_all(pl-pl,VS.110).gifOkreś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
    )]

ms182527.collapse_all(pl-pl,VS.110).gifDostę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

TestContext.DataRow

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

Inne zasoby

Jak: Utwórz i uruchom Test jednostki

Uruchomione testy Eksploratorem badania