Udostępnij za pośrednictwem


Podstawowe informacje o jednostki badań

W tym temacie opisano podstawy pisanie i uruchamianie testu jednostki w Eksploratorze Test Visual Studio.Zawiera następujące sekcje:

Unit testing overview

  • Quick starts

The MyBank Solution example

Creating the unit test projects

Writing your tests

Running tests in Test Explorer

  • Running and viewing tests from the Test Explorer toolbar

  • Running tests after every build

  • Filtering and grouping the test list

Debugging unit tests

Additional tools for unit tests

  • Generating application code from tests

  • Generating multiple tests by using data driven test methods

  • Analyzing unit test code coverage

  • Isolating unit test methods with Microsoft Fakes

Jednostki badań omówienie

Programu Visual Studio Test Explorer jest przeznaczony do obsługi programistom oraz zespołom, które zawierają jednostki badań w ich praktyk rozwoju oprogramowania.Jednostki badań pomaga zapewnić poprawność program, sprawdzając, czy kod aplikacji jest oczekiwań ją do.Jednostki badań, analizowania funkcje programu, aby odkryć dyskretna testować zachowań, które można przetestować jako indywidualne jednostek.Za pomocą struktury jednostki do tworzenia badań tych zachowań oraz sprawozdanie z wyników tych badań.

Jednostki badań ma największy wpływ, gdy jest integralną częścią przepływu pracy rozwoju oprogramowania.Jak najszybciej po napisaniu funkcji lub innych bloku kodu aplikacji, należy utworzyć testy, sprawdzić działanie kodu w odpowiedzi na standard, granica i przypadków niepoprawne dane wejściowe i sprawdź, że jawny lub niejawny założenia przez kod.W praktyce rozwoju oprogramowania, znane jako test driven development, tworzenie jednostki badań przed pisać kod, aby użyć jednostki badań jako dokumentacji projektu i specyfikacji funkcjonalnych funkcji.

Test Explorer umożliwia elastyczne i skuteczne testy jednostki i wyświetlić ich wyniki w Visual Studio.Visual Studio instaluje jednostki Microsoft badania ram dla kodu zarządzanego i macierzystym.Test Explorer można również uruchomić firm i open source RAM test jednostki, które wprowadziły Test Explorer rozszerzenia interfejsów.Można dodać wiele z tych ram za pośrednictwem Menedżera rozszerzeń programu Visual Studio i galerii programu Visual Studio.ZobaczJak: Instalowanie RAM Test jednostki strony trzeciej

Widoki Eksploratora test można wyświetlić wszystkie testy lub badania, które przeszły nie powiodło się, nie został jeszcze uruchomiony lub został pominięty.Testy w dowolnym widoku można filtrować według dopasowywania tekstu w polu wyszukiwania na poziomie globalnym lub wybierając jedną z wstępnie zdefiniowanych filtrów.Każde zaznaczenie badań można uruchomić w dowolnym momencie.Kiedy używać Visual Studio Ultimate, można uruchomić testy automatycznie po każdej kompilacji.Wyniki testu są oczywista pasek przebiegu/fail u góry okna Eksploratora.Szczegóły wynik metody badania są wyświetlane po wybraniu badania.

Hh694602.collapse_all(pl-pl,VS.110).gifSzybkie uruchamianie

Wprowadzenie do testowania jednostek, że przejście bezpośrednio do kodowania zobacz jeden z tych tematów:

Przykład rozwiązania MyBank

W tym temacie używamy rozwoju fikcyjna aplikacji o nazwie MyBank jako przykład.Rzeczywisty kod postępuj zgodnie z wyjaśnieniami w tym temacie nie jest konieczne.Metody badań są napisane w języku C# i prezentowane za pomocą Microsoft jednostki badań Framework kod zarządzany, jednak łatwo przenoszone pojęcia innych języków i RAM.

Roztwór MyBank

Pierwsza próba projektu dla naszych MyBank aplikacji zawiera składnik kont, reprezentującą indywidualne konta i jego transakcji w banku i składnik bazy danych, który reprezentuje funkcje agregacji i zarządzanie poszczególnych kont.

Tworzymy MyBank roztworu, który zawiera dwa projekty:

  • Accounts

  • BankDb

Nasze pierwsza próba projektowanie Accounts projekt zawiera klasy do przechowywania podstawowych informacji o koncie interfejs, który określa wspólne funkcje dowolnego typu konta, jak złożenie i wycofania aktywów z konta, a Klasa pochodna od interfejsu, który reprezentuje konto bankowe.Projekty sprawozdań zaczyna się od tworzenia następujące pliki źródłowe:

  • AccountInfo.csDefiniuje podstawowe informacje dotyczące konta.

  • IAccount.csdefiniuje standard IAccountinterfejsu dla konta, włączając metody do złożenia i wycofania z konta aktywów i pobrać saldo konta.

  • CheckingAccount.cszawiera CheckingAccount klasy, która implementuje IAccounts interfejsu dla konta bankowego.

Wiemy z doświadczenia upewnij się, że wycofane kwota jest mniejsza niż saldo konta jest że mianownik, które musi wykonać wycofanie z konta bankowego.Aby zastąpić możemy IAccount.Withdaw metody w CheckingAccount metody kontroli tego warunku.Metoda może wyglądać następująco:

public void Withdraw(double amount)
{
    if(m_balance >= amount)
    {
        m_balance -= amount;
    }
    else
    {
        throw new ArgumentException(amount, "Withdrawal exceeds balance!")
    }
}

Teraz, że mamy jakiś kod jest czasu badania.

Tworzenie jednostki badań projektów

Projekt badania jednostki zwykle odzwierciedla strukturę projektu jednego kodu.W przykładzie MyBank należy dodać dwa projekty badań jednostki o nazwie AccountsTests i BankDbTests do MyBanks roztworu.Nazwy projektów badań są dowolne, ale przyjęcie standardową konwencją nazewnictwa jest dobrym pomysłem.

Aby dodać jednostkę badania projektu do rozwiązania:

  1. Na pliku menu wybierz Nowy i wybierz polecenie projektu (klawiatury klawisze Ctrl + Shift + N).

  2. W oknie dialogowym Nowy projekt rozwiń zainstalowane węzła, wybrać język, który chcesz użyć w projekcie badania, a następnie wybierz Test.

  3. Aby użyć jednej z ram test jednostki firmy Microsoft, wybierz polecenie Projektu badania jednostki z listy szablonów projektu.W przeciwnym razie wybierz szablon projektu jednostki framework test, który chcesz użyć.Aby przetestować Accounts projektu naszego przykładu będzie nazwa projektu AccountsTests.

    Informacje dotyczące przestrogiPrzestroga

    Nie wszystkie strony trzeciej i open source jednostki badań RAM zapewniają szablon projektu programu Visual Studio.Informacje dotyczące tworzenia projektu, zapoznaj się z dokumentem ramy.

  4. W projekcie badania jednostki Dodaj odwołanie do projektu kod w naszym przykładzie do projektu kont badany.

    Aby utworzyć odwołanie do projektu kodu:

    1. Zaznacz projekt w oknie Solution Explorer.

    2. Na projektu menu wybierz Dodaj odwołanie.

    3. W oknie dialogowym Menedżera odniesienia otworzyć roztwór węzła i wybierz polecenie projektów.Wybierz nazwę projektu kod i zamknąć okno dialogowe.

Każdy projekt test jednostki zawiera klasy, które dublowania nazwy klas kodu projektu.W naszym przykładzie AccountsTests project zawiera następujące klasy:

  • AccountInfoTestsKlasa zawiera metody badania jednostki AccountInfo klasy w BankAccount projektu

  • CheckingAccountTestsKlasa zawiera metody badania jednostki CheckingAccount klasy.

Testy pisania

Jednostki badań framework używanego i Visual Studio IntelliSense poprowadzi Cię przez tworzenie testy dla projektu kodu.Do uruchomienia programu Explorer badania, większość RAM wymagają dodawania określonych atrybutów do identyfikacji jednostki metody badania.RAM umożliwiają także — zwykle poprzez assert oświadczeń lub metoda atrybuty — aby wskazać, czy metoda badania został przekazany lub nie powiodło się.Inne atrybuty zidentyfikować Instalacja opcjonalna w czasie inicjowania klasy i metod przed każdej metody badań i metody usuwania, które są uruchamiane po każdej metody badania i przed klasy.

Wzorzec AAA (Rozmieść aktu, Assert) jest powszechnym sposobem pisania testów jednostki dla metody badanego.

  • Rozmieść sekcji Metoda badania jednostki inicjuje obiekty i ustawia wartość danych jest przekazywana do metody badanego.

  • Act sekcji wywołuje metodę badanego parametrów ułożone.

  • Assert sekcji weryfikuje, że działania metody badanego zachowuje się zgodnie z oczekiwaniami.

Aby przetestować CheckingAccount.Withdraw metody naszym przykładzie, możemy zapisać dwóch testów: weryfikującego zachowanie standardowe metody oraz weryfikującego wycofanie więcej niż saldo zakończy się niepowodzeniem.W CheckingAccountTests klasy, możemy dodać następujące metody:

[TestMethod]
public void Withdraw_ValidAmount_ChangesBalance()
{
    // arrange
    double currentBalance = 10.0;
    double withdrawal = 1.0;
    double expected = 9.0;
    var account = new CheckingAccount("JohnDoe", currentBalance);
    // act
    account.Withdraw(withdrawal);
    double actual = account.Balance;
    // assert
    Assert.AreEqual(expected, actual);
}

[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void Withdraw_AmountMoreThanBalance_Throws()
{
    // arrange
    var account = new CheckingAccount("John Doe", 10.0);
    // act
    account.Withdraw(1.0);
    // assert is handled by the ExcpectedException
}

Należy zauważyć, że Withdraw_ValidAmount_ChangesBalance używa jawnej Assert oświadczenie, czy metoda badania przekazuje czy nie powiedzie się, podczas Withdraw_AmountMoreThanBalance_Throws używa ExpectedException atrybutu do określenia sukces metody badania.W obszarze obejmuje struktury testowej jednostki otacza metody badania instrukcji try i catch.W większości przypadków Jeśli wyjątek metody badania i wyjątek jest ignorowana.ExpectedException Atrybutu powoduje, że metoda badania do przekazania, jeśli określony wyjątek.

Aby uzyskać więcej informacji na temat RAM badania jednostki Microsoft Zobacz jeden z następujących tematów:

Uruchamianie testów w Explorer badania

Podczas tworzenia projektu badania testy są wyświetlane w Eksploratorze badania.Explorer badania nie jest widoczny, wybierz polecenie Test w menu programu Visual Studio wybierz Windowsi wybierz polecenie Test Explorer.

Explorer testu jednostki

Jak uruchomić, zapisać i uruchom testy widok domyślny Test Explorer wyświetla wyniki w grupach Niepowodzenie testów, Przekazany testów, Pominięte testów i Nie uruchomić testy.Można wybrać nagłówka grupy, aby otworzyć widok, który wyświetla wszystkie testy w tej grupie.

Hh694602.collapse_all(pl-pl,VS.110).gifUruchomione i przeglądanie testów z paska narzędzi Eksploratora badania

Pasek narzędzi Test Explorer ułatwia odnajdowanie, organizowanie i testy, które są zainteresowane.

Testy z paska narzędzi Eksploratora Test

Można wybrać Uruchomić wszystkie wszystkie testy lub wybrać uruchomić Aby wybrać podzbiór testy, aby uruchomić.Po uruchomieniu zestaw testów podsumowanie badania pojawi się u dołu okna Eksploratora badania.Wybierz przycisk Testuj, aby wyświetlić szczegóły tego testu w dolnym okienku.Wybierz Otwórz Test z menu kontekstowego (klawiatury: F12) wyświetlanie kodu źródłowego dla wybranego testu.

Hh694602.collapse_all(pl-pl,VS.110).gifUruchomione testy po każdej kompilacji

Informacje dotyczące przestrogiPrzestroga

Bieżące jednostki badań po każdej kompilacji jest obsługiwany tylko w Visual Studio Ultimate.

Uruchom po kompilacji

Aby uruchomić testy jednostki po każdej kompilacji lokalnego, wybierz Test standardowego menu wybierz Uruchom testy po budowanie na pasku narzędzi Eksploratora badania.

Hh694602.collapse_all(pl-pl,VS.110).gifFiltrowanie i grupowanie listy badań

Jeśli masz dużą liczbę prób można wpisać w polu wyszukiwania Test Explorer, aby przefiltrować listę według określonego ciągu.Można ograniczyć wydarzenia filtru więcej, wybierając z listy filtrów.

Kategorii filtrów wyszukiwania

Przycisk Grupa Explorer test

Testy grupowanie według kategorii, należy wybrać Grupy przez przycisku.

Aby uzyskać więcej informacji zobaczUruchomione testy Eksploratorem badania

Testy debugowania

Test Explorer można rozpocząć sesji debugowania za testy.Krokowe kodu z Visual Studio debugger bezproblemowe przejście i z powrotem między jednostki badań i projektów w ramach badania.Aby rozpocząć debugowanie:

  1. W Edytorze Visual Studio ustaw punkt przerwania metod badania, które chcesz debugować.

    [!UWAGA]

    Ponieważ metody badań można uruchomić w dowolnej kolejności, w których chcesz debugować metod badań punkty przerwania.

  2. W Eksploratorze Test Wybierz metody badania, a następnie wybierz polecenie Debugowania wybrane testy z menu skrótów.

Więcej informacji o debugerze, zobacz Debugowania w środowisku Visual Studio.

Dodatkowe narzędzia dla jednostki badań

Hh694602.collapse_all(pl-pl,VS.110).gifGenerowanie kodu aplikacji z badań

Jeśli piszesz testy przed napisaniem kodu projektu można użyć IntelliSense do generowania kodu projektu klasy i metody.Zapisu metoda, która wywołuje klasy lub metody, którą chcesz wygenerować instrukcję, a następnie otworzyć menu IntelliSense wywołanie.Jeśli wywołanie konstruktora klasy nowy, wybierz Generowanie nowego typu z menu i wykonaj polecenia kreatora, aby wstawić w projekcie kod klasy.Jeśli wywołanie metody, należy wybrać Generuj nową metodę z menu opcji IntelliSense.

Generowanie metoda skrótowej Intellisense Menu

Hh694602.collapse_all(pl-pl,VS.110).gifGenerowanie wielu testów przy użyciu metody badań opartych na danych

[!UWAGA]

Procedury te stosuje się tylko do testowania metod zapisu przy użyciu kodu zarządzanego struktury testowej jednostki Microsoft.Jeśli korzystasz z różnych ram, zajrzyj do dokumentacji ramy równoważne funkcje.

Metody badań opartych na danych pozwalają sprawdzić zakres wartości w metodzie badania pojedynczą jednostkę.Aby utworzyć metody badań opartych na danych jednostki, ozdobienia metodę z DataSource atrybut określa dane źródłowe i tabeli, która zawiera wartości zmiennych, które chcesz przetestować.W treści metody przypisywania wartości wiersza do zmiennych za pomocą TestContext.DataRow[nazwa_kolumny] indeksatora.

Załóżmy na przykład, możemy dodać metodę niepotrzebne CheckingAccount klasy o nazwie AddIntegerHelper.AddIntegerHelperdodaje dwie liczby całkowite.

Do tworzenia opartych na danych test AddIntegerHelper metody, najpierw tworzymy bazy danych Access o nazwie AccountsTest.accdb i tabela o nazwie AddIntegerHelperData.AddIntegerHelperData Definiuje tabeli określić pierwszy i drugi operandy dodanie kolumny i kolumny, aby określić oczekiwany wynik.Liczba wierszy możemy wypełnić odpowiednie wartości.

    [DataSource(
        @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Projects\MyBank\TestData\AccountsTest.accdb", 
        "AddIntegerHelperData"
    )]
    [TestMethod()]
    public void AddIntegerHelper_DataDrivenValues_AllShouldPass()
    {
        var target = new CheckingAccount();
        int x = Convert.ToInt32(TestContext.DataRow["FirstNumber"]);
        int y = Convert.ToInt32(TestContext.DataRow["SecondNumber"]); 
        int expected = Convert.ToInt32(TestContext.DataRow["Sum"]);
        int actual = target.AddIntegerHelper(x, y);
        Assert.AreEqual(expected, actual);
    }

Metoda przypisany jest uruchamiane jednokrotnie dla każdego wiersza w tabeli.Test Explorer zgłasza błąd testu dla metody, jeśli dowolne iteracji nie.W okienku szczegółów wyniki badania dla metody zawiera metoda status przebiegu/Niepowodzenie dla każdego wiersza danych.

Aby uzyskać więcej informacji zobaczPorady: tworzenie testu jednostkowego opartego na danych

Hh694602.collapse_all(pl-pl,VS.110).gifAnalizowanie jednostki badań kod zapotrzebowania

[!UWAGA]

Użycie kodu testu jednostki jest dostępna w językach macierzystych i zarządzanych i wszystkie jednostki badań RAM, uruchamiane w ramach badania jednostki.

Można określić ilość kodu produktu, który jest faktycznie testowany przez jednostkę testy za pomocą narzędzia Visual Studio code coverage.Użycie kodu można uruchomić testy wybrane lub wszystkie testy w roztworze.Okno kodu zapotrzebowania wyniki Wyświetla procent bloki kodu produktu, które były wykonywane przez wiersz, funkcja, klasy, nazw i moduł.

Aby uruchomić kod zapotrzebowania dla metody badania w roztworze,

  1. Wybierz testów w menu programu Visual Studio i wybierz polecenie Analizuj code coverage.

  2. Wybierz jedną z tych poleceń:

    1. Wybrane testy uruchamia wybrane w Eksploratorze testowania metody badania.

    2. Wszystkie testy uruchamia wszystkie metody w roztworze.

Wyniki zapotrzebowania są wyświetlane w oknie Kod zapotrzebowania wyniki.

Kod zapotrzebowania wyników

Aby uzyskać więcej informacji, zobacz Za pomocą Code Coverage, aby określić, jak dużo kodu jest badany.

Hh694602.collapse_all(pl-pl,VS.110).gifIzolowanie metody badania jednostki z podrobionymi Microsoft

[!UWAGA]

Podrobionych Microsoft jest dostępna tylko w Visual Studio Ultimate.Podrobionych Microsoft można tylko z metody badań, które zapisu przy użyciu kodu zarządzanego jednostki badań RAM.

Problem

Metody badania jednostki, które fokus na wewnętrzny kod w funkcji sprawdzania może być trudne do zapisu, gdy metoda w obszarze badań wywołania funkcji, które wprowadzają zależności zewnętrzne.Na przykład metody CheckingAccount przykład klasy należy prawdopodobnie wywołań BankDb składnika do aktualizacji głównej bazy danych.Firma Microsoft może byłaby CheckingAccount klasy wyglądały jak następujące:

class CheckingAccount : IAccount
{
    public CheckingAccount(customerName, double startingBalance, IBankDb bankDb)
    {
        m_bankDb = bankDb;
        // set up account
    }

    public void Withdraw(double amount)
    {
        if(m_balance >= amount)
        {
            m_balance = m_MyBankDb.Withdraw(m_accountInfo.ID, amount);
        }
        else
        {
            throw new ArgumentException(amount, "Withdrawal exceeds balance!")
        }
    }

    private IBankDb m_bankDb = null;
    // ...

Testów jednostki CheckingAccount.Withdraw metody można teraz się niepowodzeniem z powodu problemów spowodowanych przez wywołanie m_bankDb.Withdraw.Połączenia bazy danych lub w sieci mogą zostać utracone lub uprawnienia do bazy danych może być błędny.Niepowodzenie w m_bankDB.Withdraw wywołanie spowodowałoby test niepowodzenie przyczyn, które nie są związane z jego wewnętrznego kodu.

Rozwiązanie Microsoft podrobionych

Podrobionych Microsoft tworzy Zgromadzenia, zawierający klasy i metody, które można podstawić klas w metody badania jednostki powodujące zależności.Klasy zastępczych w module generowanych podrobionych deklaruje metody i pełnomocnik dla każdej metody publiczne składnika docelowego.W metodzie badania zaimplementować pełnomocnika do tworzenia dokładne zachowanie zależności wywołanie metody, którą chcesz przetestować.

W naszym przykładzie mamy Tworzenie zestawu podrobionych dla BankDb projektu, a następnie użyj StubIBankDb klasy generowany przez podrobionych i który pochodzi od IBankDb interfejsu do usunięcia niepewności spowodowanych interakcje z bazą danych.Wersja zmodyfikowane Withdraw_ValidAmount_ChangesBalance metody badania następnie wyglądałby następująco:

[TestMethod]
public void Withdraw_ValidAmount_ChangesBalance()
{
    // arrange
    double currentBalance = 10.0;
    double withdrawal = 1.0;
    double expected = 9.0;

    // set up the Fakes object and delegate
    var stubBankDb = new MyBank.Stubs.StubIBankDb();
    stubBankDb.WithdrawDoubleDouble = (id, amount) => { return 9.0; }
    var account = new CheckingAccount("JohnDoe", currentBalance, stubBankDb);

    // act
    account.Withdraw(withdrawal);
    double actual = account.Balance;

    // assert
    Assert.AreEqual(expected, actual);
}

Ten wiersz w metodzie badania:

stubBankDb.WithdrawDoubleDouble = (id, amount) => { return 9.0; }

implementuje podrobionych delegować Withdraw metody przy użyciu wyrażenia lamba.stubBankDb.Withdraw Metoda wywołuje delegata i tak zawsze zwraca wartość określonej wartości, metody badania wiarygodnie sprawdzić zachowanie umożliwia Accounts metody.

Więcej informacji na temat podrobionych Microsoft

Podrobionych Microsoft używa dwóch podejść do tworzenia klas podstaw:

  1. Wsie wygenerować klasy substytut pochodzące od interfejsu nadrzędnego zależność klasy docelowej.Publiczne wirtualnych metod klasy docelowej mogą zastąpić metod skrótowej.

  2. Sprawdzaniem przekazywanie połączeń metodą docelowego do metody shim substytut dla metod wirtualnych za pomocą Instrumentacji runtime.

Oba podejścia umożliwia generowanych delegatów wywołania metody zależność określić zachowanie, który ma w metodzie badania.

Aby uzyskać więcej informacji, zobacz Izolowanie testowanego kodu za pomocą struktury Microsoft Fakes.