Udostępnij za pomocą


Pisanie testów jednostkowych dla języka C/C++ w programie Visual Studio

Testy jednostkowe języka C++ można pisać i uruchamiać przy użyciu okna Eksploratora testów . Działa tak samo jak w przypadku innych języków. Aby uzyskać więcej informacji na temat korzystania z Eksploratora testów, zobacz Run unit tests with Test Explorer (Uruchamianie testów jednostkowych za pomocą Eksploratora testów).

Uwaga / Notatka

Niektóre funkcje, takie jak Live Unit Testing, Kodowane testy interfejsu użytkownika i IntelliTest, nie są obsługiwane w języku C++.

Program Visual Studio obejmuje te struktury testowe języka C++ bez dodatkowych plików do pobrania:

  • Microsoft Framework Jednostkowego Testowania dla C++
  • Google Test
  • Boost.Test
  • CTest

Możesz użyć zainstalowanych struktur lub napisać własną kartę testową dla dowolnej platformy, która ma być używana w programie Visual Studio. Adapter testowy integruje testy jednostkowe z oknem Eksplorator testów . Dostępnych jest kilka adapterów nie-Microsoft w witrynie Visual Studio Marketplace. Aby uzyskać więcej informacji, zobacz Instalowanie struktur testów jednostkowych.

Wskazówka

Możesz również użyć polecenia z ukośnikiem Copilot /tests, aby wygenerować testy jednostkowe na podstawie kodu. Możesz na przykład wpisać /tests using Boost framework, aby wygenerować testy Boost.Test. Aby uzyskać więcej informacji, zobacz Używanie poleceń ukośnika w Copilot Chat.

Podstawowy przepływ pracy testu

W poniższych sekcjach przedstawiono podstawowe kroki umożliwiające rozpoczęcie testowania jednostkowego języka C++. Podstawowa konfiguracja jest podobna zarówno dla platform Microsoft, jak i Google Test. Plik Boost.Test wymaga ręcznego utworzenia projektu testowego.

Tworzenie projektu testowego w programie Visual Studio 2022

Definiowanie i uruchamianie testów jednostkowych wewnątrz co najmniej jednego projektu testowego. Projekt testowy tworzy oddzielną aplikację, która wywołuje kod w pliku wykonywalnym i zgłasza jego zachowanie. Utwórz projekty testowe w tym samym rozwiązaniu co kod, który chcesz przetestować.

Aby dodać nowy projekt testowy do istniejącego rozwiązania:

  1. Kliknij prawym przyciskiem myszy węzeł Rozwiązanie w Eksploratorze rozwiązań.
  2. W menu kontekstowym wybierz pozycję Dodaj>nowy projekt.
  3. Ustaw wartość Język na C++ i wpisz test w polu wyszukiwania. Poniższy zrzut ekranu przedstawia projekty testowe, które są dostępne po zainstalowaniu obciążeń Programowanie aplikacji klasycznych w języku C++ oraz Programowanie platformy UWP.

Zrzut ekranu przedstawiający okno Dodawanie nowego projektu z wybranym językiem C++ w programie Visual Studio 2022.

Tworzenie projektu testowego w programie Visual Studio 2019

Definiowanie i uruchamianie testów wewnątrz co najmniej jednego projektu testowego. Utwórz projekty w tym samym rozwiązaniu co kod, który chcesz przetestować.

Aby dodać nowy projekt testowy do istniejącego rozwiązania:

  1. Kliknij prawym przyciskiem myszy węzeł Rozwiązanie w Eksploratorze rozwiązań.
  2. W menu kontekstowym wybierz pozycję Dodaj>nowy projekt.
  3. Ustaw wartość Język na C++ i wpisz test w polu wyszukiwania. Poniższy zrzut ekranu przedstawia projekty testowe, które są dostępne po zainstalowaniu obciążeń Programowanie aplikacji klasycznych w języku C++ oraz Programowanie platformy UWP.

Zrzut ekranu przedstawiający okno Dodawanie nowego projektu z wybranym językiem C++ w programie Visual Studio 2019.

Tworzenie odwołań do innych projektów w rozwiązaniu

Aby umożliwić dostęp do funkcji w projekcie testowym, dodaj odwołanie do projektu w projekcie testowym. W Eksploratorze rozwiązań rozwiń projekt testowy. Kliknij prawym przyciskiem myszy pozycję Odwołania , a następnie wybierz polecenie Dodaj>odwołanie. W oknie dialogowym Dodawanie odwołania wybierz projekty, które chcesz przetestować.

Zrzut ekranu przedstawiający okno dialogowe Dodawanie odwołania w programie Visual Studio 2022.

Zrzut ekranu przedstawiający okno dialogowe Dodawanie odwołania w programie Visual Studio 2019.

Jeśli kod testowy nie eksportuje funkcji, które chcesz przetestować, dodaj pliki .obj lub .lib do zależności projektu testowego. Aby uzyskać więcej informacji, zobacz Połączenie testów z plikami obiektowymi lub bibliotekowymi. Nie dołączaj plików obiektów, które mają main funkcję lub inny standardowy punkt wejścia, taki jak wmain, WinMainlub DllMain. Po dodaniu nowych plików źródłowych do projektu zaktualizuj zależności projektu testowego, aby uwzględnić odpowiednie pliki obiektów.

Dodawanie dyrektyw #include dla plików nagłówków

W pliku testu .cpp jednostkowego dodaj dyrektywę #include dla wszystkich plików nagłówków, które deklarują typy i funkcje, które chcesz przetestować. Wpisz #include ", a IntelliSense się aktywuje, aby pomóc w wyborze. Powtórz, aby uzyskać więcej nagłówków.

Zrzut ekranu przedstawiający Eksploratora rozwiązań z instrukcją #include, w której IntelliSense wyróżnia plik nagłówka w programie Visual Studio 2022.

Zrzut ekranu pokazujący Eksploratora rozwiązań z instrukcją #include, w której IntelliSense wyróżnia plik nagłówkowy w programie Visual Studio 2019.

Wskazówka

Aby uniknąć konieczności wpisywania pełnej ścieżki w każdej instrukcji include w pliku źródłowym, dodaj wymagane foldery wewłaściwościach>projektu>C/C++>General>Additional Include Directories.

Pisanie metod testowych

Uwaga / Notatka

W tej sekcji przedstawiono składnię platformy Microsoft Unit Testing Framework dla języka C/C++. Aby uzyskać więcej informacji, zobacz Dokumentacja interfejsu API Microsoft.VisualStudio.TestTools.CppUnitTestFramework.

Aby uzyskać dokumentację usługi Google Test, zobacz Google Test primer (Podstawy usługi Google Test). Aby zapoznać się z tematem Boost.Test, zobacz Boost Test library: The unit test framework (Biblioteka testów jednostkowych: struktura testów jednostkowych).

Plik .cpp w projekcie testowym ma zdefiniowaną klasę zastępczą i metodę. Pokazują przykład sposobu pisania kodu testowego. Podpisy używają makr TEST_CLASS i TEST_METHOD, dzięki czemu metody są wykrywalne w oknie Eksplorator testów .

Zrzut ekranu przedstawia klasę i metodę wycinkową przy użyciu makr TEST_CLASS i TEST_METHOD w programie Visual Studio 2022.

Zrzut ekranu przedstawia klasę i metodę wycinkową przy użyciu makr TEST_CLASS i TEST_METHOD w programie Visual Studio 2019.

TEST_CLASS i TEST_METHOD są częścią platformy Microsoft Native Test Framework. Eksplorator testów odnajduje metody testowania w innych obsługiwanych platformach w podobny sposób.

TEST_METHOD zwraca wartość void. Aby wygenerować wynik testu, użyj metod statycznych w Assert klasie, aby przetestować rzeczywiste wyniki względem oczekiwanych wyników. W poniższym przykładzie załóżmy, że MyClass ma konstruktor, który przyjmuje std::stringelement. W tym przykładzie pokazano, jak można przetestować, czy konstruktor inicjuje klasę w oczekiwany sposób:

TEST_METHOD(TestClassInit)
{
    std::string name = "Bill";
    MyClass mc(name);
    Assert::AreEqual(name, mc.GetName());
}

W poprzednim przykładzie wynik Assert::AreEqual wywołania określa, czy test przebiegnie pomyślnie, czy kończy się niepowodzeniem. Klasa Assert zawiera wiele innych metod porównywania oczekiwanych wyników z rzeczywistymi wynikami.

Możesz dodać cechy do metod testowych w celu określenia właścicieli testów, priorytetu i innych informacji. Następnie możesz użyć tych wartości do sortowania i grupowania testów w Eksploratorze testów. Aby uzyskać więcej informacji, zobacz Uruchamianie testów jednostkowych za pomocą Eksploratora testów.

Uruchamianie testów

  1. W menu Test wybierz pozycję Eksplorator testów. Poniższa ilustracja przedstawia projekt testowy przed uruchomieniem testów.

    Zrzut ekranu przedstawia Eksploratora testów przed uruchomieniem testów w programie Visual Studio 2022.

    Zrzut ekranu przedstawia Eksploratora testów przed uruchomieniem testów w programie Visual Studio 2019.

    Uwaga / Notatka

    Integracja narzędzia CTest z Eksploratorem testów nie jest jeszcze dostępna. Uruchom testy CTest z menu głównego narzędzia CMake.

  2. Jeśli w oknie brakuje któregokolwiek z testów, skompiluj projekt testowy, klikając prawym przyciskiem myszy węzeł w Eksploratorze rozwiązań i wybierając polecenie Kompiluj lub Ponownie skompiluj.

  3. W Eksploratorze testów wybierz pozycję Uruchom wszystko lub wybierz określone testy, które chcesz uruchomić. Kliknij prawym przyciskiem myszy test, aby otworzyć inne opcje, w tym uruchomienie go w trybie debugowania z włączonymi punktami przerwania. Po uruchomieniu wszystkich testów w oknie są wyświetlane testy, które zakończyły się powodzeniem, oraz testy, które zakończyły się niepowodzeniem.

    Zrzut ekranu przedstawia Eksploratora testów po uruchomieniu testów w programie Visual Studio 2022.

    Zrzut ekranu przedstawiający Eksploratora testów po uruchomieniu testów w programie Visual Studio 2019.

W przypadku testów, które zakończyły się niepowodzeniem, komunikat wyświetla szczegóły, które ułatwiają diagnozowanie przyczyny. Kliknij prawym przyciskiem myszy na nieudany test, aby wyświetlić menu podręczne. Wybierz pozycję Debuguj , aby przejść przez funkcję, w której wystąpił błąd.

Aby uzyskać więcej informacji na temat korzystania z Eksploratora testów, zobacz Run unit tests with Test Explorer (Uruchamianie testów jednostkowych za pomocą Eksploratora testów).

Aby uzyskać więcej informacji na temat testowania jednostkowego, zobacz Podstawy testu jednostkowego.

Korzystanie z funkcji CodeLens

Program Visual Studio 2017 lub nowszy (wersje Professional i Enterprise)

Funkcja CodeLens umożliwia szybkie wyświetlanie stanu testu jednostkowego bez opuszczania edytora kodu.

Zainicjuj kodLens dla projektu testu jednostkowego języka C++ na dowolny z następujących sposobów:

  • Edytuj i skompiluj projekt testowy lub rozwiązanie.
  • Ponownie skompiluj projekt lub rozwiązanie.
  • Uruchom testy w oknie Eksplorator testów .

Po zainicjowaniu funkcji CodeLens można zobaczyć ikony stanu testu nad każdym testem jednostkowym.

Zrzut ekranu przedstawiający ikony CodeLens języka C++ w programie Visual Studio 2022.

Zrzut ekranu przedstawiający ikony CodeLens języka C++ w programie Visual Studio 2019.

Wybierz ikonę, aby uzyskać więcej informacji, lub aby uruchomić lub debugować test jednostkowy:

Zrzut ekranu przedstawiający ikonę C++ CodeLens po wybraniu jej w celu uzyskania szczegółowych informacji w programie Visual Studio 2022.

Zrzut ekranu przedstawiający ikonę CodeLens języka C++ po wybraniu jej w celu uzyskania szczegółowych informacji w programie Visual Studio 2019.