Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sprawdź, czy kod działa zgodnie z oczekiwaniami, tworząc i uruchamiając testy jednostkowe. Jest to nazywane testowaniem jednostkowym, ponieważ dzielisz funkcjonalność programu na dyskretne zachowania z możliwością testowania, które można przetestować jako poszczególne jednostki. Eksplorator testów programu Visual Studio zapewnia elastyczny i wydajny sposób uruchamiania testów jednostkowych i wyświetlania ich wyników w programie Visual Studio. Program Visual Studio instaluje struktury testów jednostkowych firmy Microsoft dla kodu zarządzanego i natywnego. Użyj struktury testów jednostkowych , aby utworzyć testy jednostkowe, uruchomić je i zgłosić wyniki tych testów. Uruchom ponownie testy jednostkowe po wprowadzeniu zmian w celu przetestowania, że kod nadal działa prawidłowo. Program Visual Studio Enterprise może to zrobić automatycznie za pomocą funkcji Live Unit Testing, która wykrywa testy, których dotyczy zmiana kodu, i uruchamia je w tle podczas wpisywania.
Testowanie jednostkowe ma największy wpływ na jakość kodu, gdy jest to integralna część przepływu pracy tworzenia oprogramowania. Gdy tylko napiszesz funkcję lub inny blok kodu aplikacji, utwórz testy jednostkowe, które weryfikują zachowanie kodu w odpowiedzi na standardowe, granice i nieprawidłowe przypadki danych wejściowych oraz sprawdzają wszelkie jawne lub niejawne założenia dokonane przez kod. W przypadku programowania opartego na testach należy utworzyć testy jednostkowe przed napisaniem kodu, aby używać testów jednostkowych zarówno jako dokumentacji projektowej, jak i specyfikacji funkcjonalnych.
Eksplorator testów może również uruchamiać frameworki testów jednostkowych innych firm i open source, które zaimplementowały interfejsy dodatków Eksploratora testów. Wiele z tych platform można dodać za pomocą Menedżera rozszerzeń programu Visual Studio i galerii programu Visual Studio. Aby uzyskać więcej informacji, zobacz Instalowanie zewnętrznych frameworków do testów jednostkowych.
Wprowadzenie
Aby zapoznać się z wprowadzeniem do testowania jednostkowego, które umożliwia bezpośrednie kodowanie, zobacz jeden z następujących artykułów:
Przewodnik: tworzenie i uruchamianie testów jednostkowych dla kodu platformy .NET
Przewodnik: programowanie oparte na testach za pomocą Eksploratora testów
Pisanie testów jednostkowych dla języka C/C++ w programie Visual Studio
Przykład rozwiązania bankowego
W tym artykule używamy tworzenia fikcyjnej aplikacji o nazwie MyBank jako przykładu. Nie potrzebujesz rzeczywistego kodu, aby postępować zgodnie z wyjaśnieniami w tym artykule. Metody testowe są napisane w języku C# i prezentowane przy użyciu platformy Microsoft Unit Testing Framework dla kodu zarządzanego. Jednak koncepcje są łatwo przenoszone do innych języków i struktur.
Nasza pierwsza próba zaprojektowania MyBank aplikacji obejmuje składnik kont, który reprezentuje indywidualne konto i jego transakcje z bankiem, oraz składnik bazy danych, który reprezentuje funkcjonalność agregacji i zarządzania poszczególnymi kontami.
Tworzymy Bank rozwiązanie, które zawiera dwa projekty:
AccountsBankDB
Nasza pierwsza próba zaprojektowania Accounts projektu zawiera klasę do przechowywania podstawowych informacji o koncie, interfejs określający typowe funkcje dowolnego typu konta, takie jak depozytowanie i wycofywanie zasobów z konta, oraz klasa pochodząca z interfejsu reprezentującego konto kontrolne. Rozpoczynamy projekty Kont, tworząc następujące pliki źródłowe:
AccountInfo.cs definiuje podstawowe informacje dotyczące konta.
IAccount.cs definiuje standardowy
IAccountinterfejs dla konta, w tym metody depozytu i wypłaty aktywów z konta oraz pobierania salda konta.CheckingAccount.cs zawiera klasę
CheckingAccount, która implementujeIAccountinterfejs dla konta kontrolnego.
Wiemy z doświadczenia, że jedynym warunkiem wypłaty z rachunku bieżącego jest upewnienie się, że kwota wypłacana jest mniejsza niż saldo konta. Dlatego zastąpimy metodę IAccount.Withdraw w CheckingAccount metodzie , która sprawdza ten warunek. Metoda może wyglądać następująco:
public void Withdraw(double amount)
{
if(m_balance >= amount)
{
m_balance -= amount;
}
else
{
throw new ArgumentException(nameof(amount), "Withdrawal exceeds balance!");
}
}
Teraz, gdy mamy już jakiś kod, nadszedł czas na testowanie.
Tworzenie testów jednostkowych za pomocą narzędzia Copilot
Począwszy od wersji Insiders programu Visual Studio 2026, możesz używać GitHub Copilot do testowania dla .NET, aby automatycznie generować testy jednostkowe. Testowanie narzędzia GitHub Copilot dla platformy .NET nie tylko generuje testy, ale debuguje testy i uruchamia je w Eksploratorze testów. Aby uzyskać więcej informacji, zobacz Overview of GitHub Copilot testing for .NET (Omówienie testowania narzędzia GitHub Copilot dla platformy .NET). Jest to zalecana metoda generowania testów.
Alternatywnie możesz użyć polecenia ukośnika Copilot /tests do generowania testów jednostkowych na podstawie kodu. Możesz na przykład wpisać /tests using NUnit Framework, aby wygenerować testy NUnit. Aby uzyskać więcej informacji, zobacz Używanie poleceń ukośnika w Copilot Chat.
Generowanie i uruchamianie testów jednostkowych
Korzystając z wersji Insider programu Visual Studio 2026, możesz użyć GitHub Copilot do testowania dla platformy .NET, aby automatycznie generować testy jednostkowe.
Większość procedur opisanych w tym artykule dotyczy ręcznie wygenerowanych testów. Jeśli chcesz dowiedzieć się więcej szczegółowych informacji na temat testowania jednostkowego, zapoznaj się z resztą tego artykułu lub przejdź do sekcji Uruchamianie testów w Eksploratorze testów.
Tworzenie testów jednostkowych za pomocą narzędzia Copilot
Aby wygenerować testy jednostkowe na podstawie kodu, możesz użyć polecenia ukośnika Copilot /tests . Możesz na przykład wpisać /tests using NUnit Framework, aby wygenerować testy NUnit. Aby uzyskać więcej informacji, zobacz Używanie poleceń ukośnika w Copilot Chat.
Tworzenie projektów testów jednostkowych i metod testowych (C#)
W przypadku języka C# często szybsze jest generowanie projektu testów jednostkowych i wycinków testów jednostkowych z kodu. Możesz też ręcznie utworzyć projekt testów jednostkowych i testować w zależności od wymagań. Jeśli chcesz utworzyć testy jednostkowe na podstawie kodu z platformą innej firmy, musisz zainstalować jedno z tych rozszerzeń: NUnit lub xUnit. Jeśli nie używasz języka C#, pomiń tę sekcję i przejdź do sekcji Tworzenie projektu testów jednostkowych i testów jednostkowych ręcznie.
Generowanie projektu testów jednostkowych i stubów testów jednostkowych.
W oknie edytora kodu kliknij prawym przyciskiem myszy i wybierz polecenie Utwórz testy jednostkowe z menu prawym przyciskiem myszy.
Uwaga / Notatka
Polecenie menu Create Unit Tests (Tworzenie testów jednostkowych ) jest dostępne tylko dla kodu języka C#. Aby użyć tej metody z platformą .NET Core lub .NET Standard, wymagany jest program Visual Studio 2019 lub nowszy.
Wybierz przycisk OK , aby zaakceptować wartości domyślne, aby utworzyć testy jednostkowe, lub zmienić wartości używane do utworzenia i nadania nazwy projektowi testów jednostkowych i testom jednostkowym. Możesz wybrać kod, który jest domyślnie dodawany do metod testów jednostkowych.
Wycinki testu jednostkowego są tworzone w nowym projekcie testu jednostkowego dla wszystkich metod w klasie.
Teraz przejdź dalej, aby dowiedzieć się, jak napisać testy , aby test jednostkowy był zrozumiały, oraz wszelkie dodatkowe testy jednostkowe, które warto dodać, aby dokładnie przetestować kod.
Tworzenie projektów testów jednostkowych i metod testowych (C#)
W przypadku języka C# często szybsze jest generowanie projektu testów jednostkowych i wycinków testów jednostkowych z kodu. Możesz też ręcznie utworzyć projekt testów jednostkowych i testować w zależności od wymagań. Jeśli chcesz utworzyć testy jednostkowe na podstawie kodu z platformą innej firmy, musisz zainstalować jedno z tych rozszerzeń: NUnit lub xUnit. Jeśli nie używasz języka C#, pomiń tę sekcję i przejdź do sekcji Tworzenie projektu testów jednostkowych i testów jednostkowych ręcznie.
Generowanie projektu testów jednostkowych i stubów testów jednostkowych.
W oknie edytora kodu kliknij prawym przyciskiem myszy i wybierz polecenie Utwórz testy jednostkowe z menu prawym przyciskiem myszy.
Uwaga / Notatka
Polecenie menu Create Unit Tests (Tworzenie testów jednostkowych ) jest dostępne tylko dla kodu języka C#. Aby użyć tej metody z platformą .NET Core lub .NET Standard, wymagany jest program Visual Studio 2019 lub nowszy.
Wybierz przycisk OK , aby zaakceptować wartości domyślne, aby utworzyć testy jednostkowe, lub zmienić wartości używane do utworzenia i nadania nazwy projektowi testów jednostkowych i testom jednostkowym. Możesz wybrać kod, który jest domyślnie dodawany do metod testów jednostkowych.
Wycinki testu jednostkowego są tworzone w nowym projekcie testu jednostkowego dla wszystkich metod w klasie.
Teraz przejdź dalej, aby dowiedzieć się, jak napisać testy , aby test jednostkowy był zrozumiały, oraz wszelkie dodatkowe testy jednostkowe, które warto dodać, aby dokładnie przetestować kod.
Utwórz ręcznie projekt testów jednostkowych oraz same testy jednostkowe
Projekt testu jednostkowego zwykle odzwierciedla strukturę pojedynczego projektu kodu. W przykładzie MyBank dodasz dwa projekty testów jednostkowych o nazwie AccountsTests i BankDbTests do Bank rozwiązania. Nazwy projektów testowych są dowolne, ale przyjęcie standardowej konwencji nazewnictwa jest dobrym pomysłem.
Aby dodać projekt testu jednostkowego do rozwiązania:
W Eksploratorze rozwiązań kliknij rozwiązanie prawym przyciskiem myszy i wybierz polecenie Dodaj>nowyprojekt.
Wpisz test w polu wyszukiwania szablonu projektu, aby znaleźć szablon projektu testu jednostkowego dla platformy testowej, której chcesz użyć. (W przykładach w tym artykule używamy biblioteki MSTest).
Na następnej stronie nadaj projektowi nazwę. Aby przetestować projekt
Accountsw naszym przykładzie, nazwij projektAccountsTests.W projekcie testu jednostkowego dodaj odwołanie do projektu kodu w ramach testu, w naszym przykładzie do projektu Accounts.
Aby utworzyć odwołanie do projektu kodu:
W projekcie testu jednostkowego w Eksploratorze rozwiązań kliknij prawym przyciskiem myszy węzeł Odwołania lub Zależności , a następnie wybierz pozycję Dodaj odwołanie do projektu lub Dodaj odwołanie, zależnie od tego, co jest dostępne.
W oknie dialogowym Menedżer odwołań otwórz węzeł Rozwiązanie i wybierz pozycję Projekty. Wybierz nazwę projektu kodu i zamknij okno dialogowe.
Każdy projekt testu jednostkowego zawiera klasy dublujące nazwy klas w projekcie kodu. W naszym przykładzie AccountsTests projekt będzie zawierał następujące klasy:
AccountInfoTestsklasa zawiera metody testów jednostkowych dlaAccountInfoklasy w projekcieAccountsCheckingAccountTestsklasa zawiera metody testów jednostkowych dlaCheckingAccountklasy.
Pisanie testów
Używana struktura testów jednostkowych i funkcja IntelliSense programu Visual Studio przeprowadzi Cię przez proces pisania kodu dla testów jednostkowych dla projektu kodu. Aby uruchomić w Eksploratorze testów, większość bibliotek wymaga dodania określonych atrybutów do identyfikowania metod testów jednostkowych. Struktury zapewniają również sposób — zwykle za pośrednictwem instrukcji asercyjnych lub atrybutów metody — aby wskazać, czy metoda testowa przeszła, czy nie powiodła się. Inne atrybuty identyfikują opcjonalne metody konfiguracji, które są uruchamiane na etapie inicjalizacji klasy i przed każdą metodą testową, oraz metody sprzątające, które są uruchamiane po każdej metodzie testowej i przed zniszczeniem klasy.
Wzorzec AAA (Ustaw, Działaj, Potwierdź) jest typowym sposobem pisania testów jednostkowych dla testowanej metody.
Sekcja Rozmieszczanie metody testu jednostkowego inicjuje obiekty i ustawia wartość danych przekazanych do metody testowanej.
Sekcja Act wywołuje metodę testową z ułożonymi parametrami.
Sekcja Assert sprawdza, czy akcja metody testowej działa zgodnie z oczekiwaniami. W przypadku platformy .NET metody w Assert klasie są często używane do weryfikacji.
Aby przetestować metodę CheckingAccount.Withdraw naszego przykładu, możemy napisać dwa testy: jeden, który weryfikuje standardowe zachowanie metody, i jeden, który sprawdza, czy wycofanie więcej niż saldo zakończy się niepowodzeniem (poniższy kod przedstawia test jednostkowy MSTest, który jest obsługiwany na platformie .NET).
CheckingAccountTests W klasie dodajemy 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);
// assert
Assert.AreEqual(expected, account.Balance);
}
[TestMethod]
public void Withdraw_AmountMoreThanBalance_Throws()
{
// arrange
var account = new CheckingAccount("John Doe", 10.0);
// act and assert
Assert.ThrowsException<System.ArgumentException>(() => account.Withdraw(20.0));
}
Aby uzyskać więcej informacji na temat platform testów jednostkowych firmy Microsoft, zobacz jeden z następujących artykułów:
Ustawianie limitów czasu dla testów jednostkowych
Jeśli używasz platformy MSTest, możesz użyć TimeoutAttribute elementu , aby ustawić limit czasu dla pojedynczej metody testowej:
[TestMethod]
[Timeout(2000)] // Milliseconds
public void My_Test()
{ ...
}
Aby ustawić limit czasu na maksymalną dozwoloną wartość:
[TestMethod]
[Timeout(TestTimeout.Infinite)] // Milliseconds
public void My_Test ()
{ ...
}
Uruchamianie testów w Eksploratorze testów
Podczas kompilowanie projektu testowego testy są wyświetlane w Eksploratorze testów. Jeśli Eksplorator testów nie jest widoczny, wybierz pozycję Testuj w menu programu Visual Studio, wybierz pozycję Windows, a następnie wybierz pozycję Eksplorator testów (lub naciśnij Ctrl + E, T).
Podczas uruchamiania, pisania i ponownego uruchamiania testów Eksplorator testów może wyświetlić wyniki w grupach: nieudanych testów, zakończonych poprawnie, pominiętych testów i nieuruchomionych testów. Na pasku narzędzi można wybrać różne opcje grupowania.
Testy można również filtrować w dowolnym widoku, dopasowując tekst w polu wyszukiwania w skali globalnej lub wybierając jeden ze wstępnie zdefiniowanych filtrów. W dowolnym momencie można uruchomić dowolny wybór testów. Wyniki przebiegu testu są natychmiast widoczne na pasku pass/fail w górnej części okna eksploratora. Szczegóły wyniku metody testowej są wyświetlane po wybraniu testu.
Uruchamianie i wyświetlanie testów
Pasek narzędzi Eksplorator testów ułatwia odnajdywanie, organizowanie i uruchamianie zainteresowanych testów.
Możesz wybrać pozycję Uruchom wszystko , aby uruchomić wszystkie testy (lub nacisnąć Ctrl + R, V) lub wybrać pozycję Uruchom , aby wybrać podzestaw testów do uruchomienia (Ctrl + R, T). Wybierz test, aby wyświetlić szczegóły tego testu w okienku szczegółów testu. Wybierz polecenie Otwórz test w menu prawym przyciskiem myszy (Klawiatura: F12), aby wyświetlić kod źródłowy wybranego testu.
Jeśli poszczególne testy nie mają zależności, które uniemożliwiają ich uruchamianie w dowolnej kolejności, włącz równoległe wykonywanie testów w menu ustawień paska narzędzi. Może to znacznie skrócić czas potrzebny na uruchomienie wszystkich testów.
Uruchamianie testów po każdej kompilacji
Aby uruchomić testy jednostkowe po każdej kompilacji lokalnej, otwórz ikonę ustawień na pasku narzędzi Eksplorator testów i wybierz pozycję Uruchom testy po kompilacji.
Filtrowanie i grupowanie listy testów
Jeśli masz dużą liczbę testów, możesz wpisać w polu wyszukiwania Eksplorator testów , aby filtrować listę według określonego ciągu. Możesz ograniczyć zdarzenie filtru bardziej, wybierając z listy filtrów.
| Button | Description |
|---|---|
|
Aby zgrupować testy według kategorii, wybierz przycisk Grupuj według . |
Aby uzyskać więcej informacji, zobacz Uruchamianie testów jednostkowych za pomocą Eksploratora testów.
Pytania i odpowiedzi
Jak debugować testy jednostkowe?
A: Użyj Eksploratora testów , aby rozpocząć sesję debugowania dla testów. Przechodzenie przez kod za pomocą debugera programu Visual Studio bezproblemowo przenosi Cię między testami jednostkowymi a projektem testowym. Aby rozpocząć debugowanie:
W edytorze programu Visual Studio ustaw punkt przerwania w co najmniej jednej metodze testowania, którą chcesz debugować.
Uwaga / Notatka
Ponieważ metody testowe mogą być uruchamiane w dowolnej kolejności, ustaw punkty przerwania we wszystkich metodach testowych, które chcesz debugować.
W Eksploratorze testów wybierz metody testowania, a następnie wybierz pozycję Debuguj wybrane testy z menu skrótów.
Dowiedz się więcej o debugowaniu testów jednostkowych.
.: Jeśli używam funkcji TDD, jak mogę wygenerować kod na podstawie testów?
A: Użyj szybkich akcji, aby wygenerować klasy i metody w kodzie projektu. Napisz instrukcję w metodzie testowej, która wywołuje klasę lub metodę, którą chcesz wygenerować, a następnie otwórz żarówkę wyświetlaną pod błędem. Jeśli wywołanie dotyczy konstruktora nowej klasy, wybierz pozycję Generuj typ z menu i postępuj zgodnie z instrukcjami kreatora, aby wstawić klasę do projektu kodu. Jeśli wywołanie dotyczy metody, wybierz pozycję Generuj metodę z menu IntelliSense.
.: Czy mogę utworzyć testy jednostkowe, które przyjmują wiele zestawów danych jako dane wejściowe w celu uruchomienia testu?
Odpowiedź: Tak.
Metody testów opartych na danych umożliwiają testowanie zakresu wartości przy użyciu pojedynczej metody testu jednostkowego. Użyj atrybutu DataRowDynamicData , lub DataSource dla metody testowej, która określa źródło danych zawierające wartości zmiennych, które chcesz przetestować.
Metoda przypisana jest uruchamiana raz dla każdego wiersza w źródle danych. Eksplorator testów zgłasza błąd testu dla metody, jeśli którakolwiek z iteracji zakończy się niepowodzeniem. Okienko szczegółów wyników testu dla metody przedstawia metodę stanu pass/fail dla każdego wiersza danych.
Dowiedz się więcej o testach jednostkowych opartych na danych.
Czy mogę wyświetlić, ile mojego kodu jest testowane przez testy jednostkowe?
Odpowiedź: Tak. Możesz określić, jaka część twojego kodu jest faktycznie testowana przez testy jednostkowe, używając narzędzia pokrycia kodu dostępnego w programie Visual Studio. Obsługiwane są języki natywne i zarządzane oraz wszystkie struktury testów jednostkowych, które mogą być uruchamiane przez platformę Unit Test Framework.
Odpowiedź: Tak. Możesz określić, jaka część twojego kodu jest rzeczywiście testowana przez testy jednostkowe, używając narzędzia analizy pokrycia w Visual Studio Enterprise. Obsługiwane są języki natywne i zarządzane oraz wszystkie struktury testów jednostkowych, które mogą być uruchamiane przez platformę Unit Test Framework.
Można uruchomić pokrycie kodu dla wybranych testów lub wszystkich testów w rozwiązaniu. Okno Wyniki pokrycia kodu pokazuje procentowy udział bloków kodu produktu, które zostały sprawdzone według wierszy, funkcji, klasy, przestrzeni nazw oraz modułów.
Aby uruchomić pokrycie kodu dla metod testowych w rozwiązaniu, wybierz pozycję Test>Analizuj pokrycie kodu dla wszystkich testów.
Wyniki pokrycia kodu pojawiają się w oknie Wyniki pokrycia kodu.
Dowiedz się więcej na temat pokrycia kodu.
.: Czy mogę przetestować metody w kodzie, które mają zależności zewnętrzne?
Odpowiedź: Tak. Jeśli masz program Visual Studio Enterprise, platforma Microsoft Fakes może być używana z metodami testowymi, które piszesz przy użyciu struktur testów jednostkowych dla kodu zarządzanego.
Firma Microsoft Fakes używa dwóch metod tworzenia klas zastępczych dla zależności zewnętrznych:
Stuby generują klasy zastępcze wywodzące się z interfejsu nadrzędnego klasy zależności docelowej. Metody wycinkowe można zastąpić publicznymi metodami wirtualnymi klasy docelowej.
Shim używają instrumentacji środowiska uruchomieniowego do przekierowywania wywołań z metody docelowej do metody zastępczej typu shim dla metod innych niż wirtualne.
W obu podejściach używasz wygenerowanych delegatów wywołań do metody zależności, aby określić zachowanie, które ma zostać określone w metodzie testowej.
Dowiedz się więcej o izolowaniu metod testów jednostkowych za pomocą narzędzia Microsoft Fakes.
Czy mogę używać innych frameworków testów jednostkowych do tworzenia testów jednostkowych?
A: Tak, wykonaj następujące kroki, aby znaleźć i zainstalować inne platformy. Po ponownym uruchomieniu programu Visual Studio otwórz ponownie rozwiązanie, aby utworzyć testy jednostkowe, a następnie wybierz zainstalowane struktury tutaj:
Wycinki testu jednostkowego zostaną utworzone przy użyciu wybranej platformy.
P: Jak wyeksportować moje wyniki testu jednostkowego?
A: Możesz użyć pliku .runsettings z wierszem polecenia lub środowiskiem IDE programu Visual Studio, aby skonfigurować testy jednostkowe i ustawić plik wyników testu. Aby uzyskać więcej informacji, zobacz LoggerRunSettings, element.