Schreiben von Komponententests für C/C++ in Visual Studio
Artikel
Sie können Ihre C++-Komponententests schreiben und ausführen, indem Sie das Fenster Test-Explorer verwenden. Es funktioniert genauso wie für andere Sprachen. Weitere Informationen zur Verwendung des Test-Explorers finden Sie unter Ausführen von Komponententests mit dem Test-Explorer.
Hinweis
Einige Features wie Live Unit Testing, Codierte UI-Tests und IntelliTest werden für C++ nicht unterstützt.
Visual Studio enthält diese C++-Testframeworks ohne zusätzliche Downloads:
Microsoft Unit Testing Framework für C++
Google Test
Boost.Test
CTest
Sie können die installierten Frameworks verwenden oder ihren eigenen Testadapter für das framework schreiben, das Sie in Visual Studio verwenden möchten. Ein Testadapter integriert Komponententests im Test-Explorer Fenster. Auf dem Visual Studio Marketplacesind mehrere Nicht-Microsoft-Adapter verfügbar. Weitere Informationen finden Sie unter Installieren von Komponententestframeworks.
Visual Studio 2017 und höher (Professional und Enterprise)
Google Test Adapter ist als Standardkomponente der Desktopentwicklung mit C++- Workload enthalten. Sie verfügt über eine Projektvorlage, die Sie einer Lösung hinzufügen können. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf den Projektmappenknoten, und wählen Sie anschließend im Kontextmenü Hinzufügen>Neues Projekt aus, um die Projektvorlage hinzuzufügen. Es verfügt auch über Optionen, die Sie mithilfe von Tools>Optionenkonfigurieren können. Weitere Informationen finden Sie unter How to: Use Google Test in Visual Studio.
Boost.Test ist als Standardkomponente in der Workload Desktopentwicklung mit C++ enthalten. Sie ist in Test-Explorer-integriert, verfügt jedoch derzeit nicht über eine Projektvorlage. Sie müssen sie manuell konfigurieren. Weitere Informationen finden Sie unter How to: Use Boost.Test in Visual Studio.
Die Komponente C++ CMake-Tools, die Teil der Workload Desktopentwicklung mit C++ ist, umfasst die Unterstützung von CTest. Weitere Informationen finden Sie unter How to: Use CTest in Visual Studio.
Sie können auch den Copilot-Schrägstrich-Befehl /tests verwenden, um Komponententests aus Code zu generieren. Sie können beispielsweise /tests using Boost framework eingeben, um Boost.Test-Tests zu generieren. Weitere Informationen finden Sie unter Verwenden von Schrägstrich-Befehlen in Copilot Chat.
Einfacher Testworkflow
Die folgenden Abschnitte zeigen die grundlegenden Schritte für die ersten Schritte mit C++-Komponententests. Die grundlegende Konfiguration ist sowohl für microsoft- als auch für Google Test-Frameworks ähnlich. Boost.Test erfordert, dass Sie manuell ein Testprojekt erstellen.
Erstellen eines Testprojekts in Visual Studio 2022
Definieren und Ausführen von Komponententests innerhalb eines oder mehrerer Testprojekte. Ein Testprojekt erstellt eine separate App, die den Code in Ihrer ausführbaren Datei aufruft und ihr Verhalten meldet. Erstellen Sie Testprojekte und den Code, den Sie testen möchten, in derselben Projektmappe.
So fügen Sie einer vorhandenen Lösung ein neues Testprojekt hinzu:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappenknoten.
Wählen Sie im Kontextmenü >Neues Projekt hinzufügenaus.
Legen Sie Sprache auf C++ fest, und geben Sie test in das Suchfeld ein. Der folgende Screenshot zeigt die Testprojekte, die verfügbar sind, wenn die Desktopentwicklung mit C++- und die UWP-Entwicklungsarbeitslast installiert werden:
Erstellen eines Testprojekts in Visual Studio 2019
Definieren und Ausführen von Tests in einem oder mehreren Testprojekten. Erstellen Sie die Projekte und den Code, den Sie testen möchten, in derselben Projektmappe.
So fügen Sie einer vorhandenen Lösung ein neues Testprojekt hinzu:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappenknoten.
Wählen Sie im Kontextmenü >Neues Projekt hinzufügenaus.
Legen Sie Language auf C++ fest, und geben Sie test in das Suchfeld ein. Der folgende Screenshot zeigt die Testprojekte, die verfügbar sind, wenn die Desktopentwicklung mit C++- und die UWP-Entwicklungsarbeitslast installiert werden:
Erstellen von Verweisen auf andere Projekte in der Projektmappe
Fügen Sie einen Verweis auf das Projekt in Ihrem Testprojekt hinzu, um den Zugriff auf die Funktionen im Testprojekt zu ermöglichen. Erweitern Sie im Projektmappen-ExplorerIhr Testprojekt. Klicken Sie mit der rechten Maustaste auf Verweise, und wählen Sie dann Hinzufügen>Verweis aus. Wählen Sie im Dialogfeld "Verweis hinzufügen" die Projekte aus, die Sie testen möchten.
Verknüpfen mit Objekt- oder Bibliotheksdateien
Wenn der Testcode die funktionen, die Sie testen möchten, nicht exportiert, fügen Sie die Ausgabe .obj oder .lib Dateien zu den Abhängigkeiten des Testprojekts hinzu. Weitere Informationen finden Sie unter So verknüpfen Sie die Tests mit den Objekt- oder Bibliotheksdateien. Schließen Sie keine Objektdateien mit einer main-Funktion oder einem anderen Standardeinstiegspunkt wie wmain, WinMainoder DllMainein. Wenn Sie ihrem Projekt neue Quelldateien hinzufügen, aktualisieren Sie die Testprojektabhängigkeiten, um die entsprechenden Objektdateien einzuschließen.
Hinzufügen #include Direktiven für Headerdateien
Fügen Sie in Ihrer Komponententestdatei .cpp Datei eine #include Direktive für alle Headerdateien hinzu, die die zu testierenden Typen und Funktionen deklarieren. Geben Sie #include "ein, und aktivieren Sie dann IntelliSense, um Ihnen bei der Auswahl zu helfen. Wiederholen Sie diesen Vorgang für weitere Überschriften.
Tipp
Um den vollständigen Pfad nicht jedes Mal in jede Include-Anweisung der Quelldatei eingeben zu müssen, fügen Sie die erforderlichen Ordner in Projekt>Eigenschaften>C/C++>Allgemein>Zusätzliche Include-Verzeichnisseein.
Die .cpp Datei in Ihrem Testprojekt verfügt über eine Stubklasse und Methode, die für Sie definiert ist. Sie zeigen ein Beispiel für das Schreiben von Testcode. Die Signaturen verwenden die makros TEST_CLASS und TEST_METHOD, wodurch die Methoden im Test-Explorer Fenster auffindbar sind.
TEST_CLASS und TEST_METHOD sind Teil des Microsoft Native Test Framework. Test-Explorer ermittelt Testmethoden in anderen unterstützten Frameworks auf ähnliche Weise.
TEST_METHOD gibt „void“ zurück. Um ein Testergebnis zu erzeugen, verwenden Sie die statischen Methoden in der Assert Klasse, um tatsächliche Ergebnisse mit erwarteten Ergebnissen zu testen. Gehen Sie im folgenden Beispiel davon aus, MyClass über einen Konstruktor verfügt, der eine std::stringakzeptiert. In diesem Beispiel wird gezeigt, wie Sie testen können, dass der Konstruktor die Klasse wie erwartet initialisiert:
Im vorherigen Beispiel bestimmt das Ergebnis des Assert::AreEqual Aufrufs, ob der Test bestanden oder fehlschlägt. Die Assert-Klasse enthält viele andere Methoden, um erwartete Ergebnisse mit tatsächlichen Ergebnissen zu vergleichen.
Sie können Testmethoden Merkmale hinzufügen, um Testbesitzende, die Priorität und andere Informationen anzugeben. Anschließend können Sie diese Werte zum Sortieren und Gruppieren von Tests im Test-Explorerverwenden. Weitere Informationen finden Sie unter Ausführen von Komponententests mit test Explorer.
Ausführen der Tests
Im Menü Test wählen Sie Test-Exploreraus. Die folgende Abbildung zeigt ein Testprojekt, bevor Sie Tests ausführen.
Hinweis
Die CTest-Integration mit Test-Explorer- ist noch nicht verfügbar. Führen Sie CTest-Tests aus dem CMake-Hauptmenü aus.
Wenn nicht alle Ihre Tests im Fenster angezeigt werden, erstellen Sie das Testprojekt, indem Sie mit der rechten Maustaste im Projektmappen-Explorer auf dessen Knoten klicken und Erstellen oder Neu erstellen auswählen.
Wählen Sie im Test-Explorer"Alleausführen" aus, oder wählen Sie die spezifischen Tests aus, die Sie ausführen möchten. Klicken Sie für weitere Optionen, einschließlich des Ausführens im Debugmodus mit aktivierten Breakpoints, mit der rechten Maustaste auf einen Test. Nachdem alle Tests ausgeführt wurden, zeigt das Fenster die bestandenen Tests und die fehlgeschlagenen Tests an.
Bei fehlgeschlagenen Tests zeigt die Meldung Details an, die bei der Diagnose der Ursache helfen. Klicken Sie mit der rechten Maustaste auf den fehlschlagenden Test, um ein Popup-Menü zu öffnen. Wählen Sie Debug- aus, um die Funktion zu durchlaufen, in der der Fehler aufgetreten ist.
Beginnen Sie mit dem Testen Ihrer C#-Apps mithilfe der Testtools in Visual Studio. Hier erfahren Sie, wie Sie Tests schreiben, den Test-Explorer verwenden, Testsammlungen erstellen und das Rot-Grün-Refactoringmuster anwenden, um Code zu schreiben.
Erstellen und Ausführen von Unit-Tests mit Google Test für C++, Hinzufügen und Konfigurieren des Testprojekts, Festlegen zusätzlicher Optionen und Hinzufügen von Include-Anweisungen.
Verwenden Sie das Microsoft Unit Testing Framework für C++, um Komponententests für Ihren C++-Code zu schreiben und auszuführen, und fügen Sie nicht exportierte Funktionen als Testabhängigkeiten hinzu.
Erstellen Sie Tests mit CTest für C++, die standardmäßig in Visual Studio integriert ist, führen Sie diese aus und verwenden Sie vertraute CMake-Befehle wie enable_testing und add_test.
Dieser Artikel beschreibt die CppUnitTestFramework-Members, die Sie verwenden können, um C++-Komponententests auf Grundlage des nativen Microsoft-Frameworks für Komponententests zu schreiben.
Entwickeln Sie eine systemeigene C++-DLL mithilfe von Test-first-Methodik, erstellen Sie Test- und DLL-Projekte, Debugtests, gestalten Sie um, reduzieren Sie Abhängigkeiten, um Komponententests zu verbessern, und vieles mehr.
Hier erfahren Sie, wie Sie Komponententests für eine C++-DLL für UWP-Apps (Universelle Windows-Plattform) mit dem Microsoft-Testframework für C++ erstellen.
Installieren und verwenden Sie den Boost.Test-Adapter, um Komponententests für C++ in Visual Studio zu entwickeln, Buildkonfigurationen zu erstellen und zu aktualisieren, und fügen Sie Anweisungen hinzu.