Schreiben von Komponententests für C/C++ in Visual Studio
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.
Anmerkung
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)
C++-Unittestprojekte unterstützen CodeLens.
Visual Studio 2017 und höher (alle Editionen)
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.
Frühere Versionen von Visual Studio
Sie können die Erweiterungen Google Test-Adapter und Boost.Test-Adapter im Visual Studio Marketplace herunterladen. Finden Sie sie unter Testadapter für Boost.Test und Testadapter für Google Test.
Tipp
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
, WinMain
oder DllMain
ein. 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.
Schreiben von Testmethoden
Anmerkung
In diesem Abschnitt wird die Syntax für das Microsoft Unit Testing Framework für C/C++ gezeigt. Weitere Informationen finden Sie unter Microsoft.VisualStudio.TestTools.CppUnitTestFramework-API-Referenz.
Die Dokumentation zu Google Test finden Sie unter Google Test primer. Für Boost.Test siehe Boost Test-Bibliothek: Das Unit-Test-Framework.
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::string
akzeptiert. In diesem Beispiel wird gezeigt, wie Sie testen können, dass der Konstruktor die Klasse wie erwartet initialisiert:
TEST_METHOD(TestClassInit)
{
std::string name = "Bill";
MyClass mc(name);
Assert::AreEqual(name, mc.GetName());
}
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.
Anmerkung
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.
Weitere Informationen zur Verwendung des Test-Explorersfinden Sie unter Ausführen von Unit-Tests mit dem Test-Explorer.
Weitere Informationen zu Komponententests finden Sie unter Komponententestgrundlagen.
Verwenden von CodeLens
Visual Studio 2017 und höher (Professional- und Enterprise-Editionen)
CodeLens- können Sie schnell den Status eines Komponententests anzeigen, ohne den Code-Editor verlassen zu müssen.
Initialisieren Sie CodeLens für ein C++-Komponententestprojekt auf eine der folgenden Arten:
- Bearbeiten und erstellen Sie Ihr Testprojekt oder Ihre Lösung.
- Erstellen Sie Ihr Projekt oder die Projektmappe erneut.
- Führen Sie Tests im Fenster Test-Explorer aus.
Nachdem Sie CodeLens initialisiert haben, können Sie die Teststatussymbole über jedem Komponententest sehen.
Wählen Sie das Symbol für weitere Informationen aus, oder führen Sie den Komponententest aus, oder debuggen Sie es: