Schreiben von Komponententests für C/C++ in Visual Studio

Sie können C++-Komponententests über das Fenster Test-Explorer schreiben und ausführen. Es funktioniert genauso wie bei anderen Sprachen. Weitere Informationen zur Verwendung des Test-Explorers finden Sie unter Ausführen von Komponententests mit dem Test-Explorer.

Hinweis

Einige Funktionen wie Live Unit Testing, Tests der programmierten UI und IntelliTest werden für C++ nicht unterstützt.

Visual Studio enthält die folgenden C++-Testframeworks, ohne dass zusätzliche Downloads erforderlich sind:

  • Microsoft-Komponententest-Framework für C++
  • Google Test
  • Boost.Test
  • CTest

Sie können die installierten Frameworks verwenden oder Ihren eigenen Testadapter für ein beliebiges Framework schreiben, dass Sie in Visual Studio verwenden möchten. Ein Testadapter integriert Komponententests in das Fenster Test-Explorer. Im Visual Studio Marketplace sind einige Adapter von Drittanbietern verfügbar. Weitere Informationen finden Sie unter Installieren von Frameworks für Komponententests von Drittanbietern.

Visual Studio 2017 und höher (Professional und Enterprise)

C++-Komponententestprojekte unterstützen CodeLens.

Visual Studio 2017 und höher (alle Editionen)

  • Der Google Test-Adapter ist als Standardkomponente in der Workload Desktop Development mit C++ enthalten. Er verfügt über eine Projektvorlage, die Sie einer Projektmappe 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. Zusätzlich bietet er Optionen, die Sie unter Tools>Optionen konfigurieren können. Weitere Informationen finden Sie unter Vorgehensweise: Verwenden von Google Test in Visual Studio.

  • Boost.Test ist als Standardkomponente in der Workload Desktop Development mit C++ enthalten. Sie ist in den Test-Explorer integriert, verfügt aber zurzeit nicht über eine Projektvorlage. Diese muss manuell konfiguriert werden. Weitere Informationen finden Sie unter Vorgehensweise: Verwenden von Boost.Test in Visual Studio.

  • Die Komponente C++ CMake tools, die Teil der Workload Desktop Development mit C++ ist, umfasst die Unterstützung von CTest. Weitere Informationen finden Sie unter Vorgehensweise: Verwenden von CTest in Visual Studio.

Ältere Versionen von Visual Studio

Die Erweiterungen für die Adapter Google-Test und Boost.Test können Sie im Visual Studio Marketplace herunterladen. Suchen Sie einfach nach Test adapter for Boost.Test und nach Test adapter for Google Test.

Grundlegender Testworkflow

Im folgenden Abschnitt werden die grundlegenden ersten Schritte für C++-Komponententests dargestellt. Die Basiskonfigurationen für die Microsoft- und Google Test-Frameworks sind ähnlich. Für Boost.Test müssen Sie ein Testprojekt manuell erstellen.

Erstellen eines Testprojekts in Visual Studio 2022

Definieren Sie Komponententests, und führen Sie sie in einem oder mehreren Testprojekten aus. 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.

Um einer vorhandenen Projektmappe ein neues Testprojekt hinzuzufügen,

  1. klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappenknoten.
  2. Klicken Sie dann im Popupmenü auf Hinzufügen>Neues Projekt.
  3. Legen Sie Sprache auf C++ fest, und geben Sie „test“ in das Suchfeld ein. In der folgenden Abbildung werden Testprojekte dargestellt, auf die Sie zugreifen können, wenn die Workloads Desktopentwicklung mit C++ und Entwicklung für die universelle Windows-Plattform installiert sind:

C++ Test Projects in Visual Studio 2022

Erstellen eines Testprojekts in Visual Studio 2019

Definieren Sie Tests, und führen Sie sie in einem oder mehreren Testprojekten aus. Erstellen Sie die Projekte und den Code, den Sie testen möchten, in derselben Projektmappe. Um einer vorhandenen Projektmappe ein neues Testprojekt hinzuzufügen,

  1. klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappenknoten.
  2. Klicken Sie dann im Popupmenü auf Hinzufügen>Neues Projekt.
  3. Legen Sie Sprache auf C++ fest, und geben Sie „test“ in das Suchfeld ein. In der folgenden Abbildung werden Testprojekte dargestellt, auf die Sie zugreifen können, wenn die Workloads Desktopentwicklung mit C++ und Entwicklung für die universelle Windows-Plattform installiert sind:

C++ Test Projects in Visual Studio 2019

Erstellen von Verweisen auf andere Projekte in der Projektmappe

Fügen Sie im Testprojekt einen Verweis auf das Projekt hinzu, um den Zugriff auf die Funktionen im zu testenden Projekt zu aktivieren. Klicken Sie im Projektmappen-Explorer zunächst mit der rechten Maustaste auf den Knoten für das Testprojekt. Wählen Sie Hinzufügen>Verweis aus. Wählen Sie im Dialogfeld Verweis hinzufügen das Projekt bzw. die Projekte aus, das bzw. die Sie testen möchten.

Add reference

Wenn der Testcode die Funktionen, die Sie testen möchten, nicht exportiert, fügen Sie den Abhängigkeiten des Testprojekts die OBJ- oder LIB-Ausgabedateien hinzu. Weitere Informationen finden Sie unter To link the tests to the object or library files (Verknüpfen des Tests mit Objekt- oder Bibliotheksdateien). Fügen Sie keine Objektdateien ein, die eine main-Funktion oder einen anderen Standardeinstiegspunkt wie wmain, WinMain oder DllMain umfassen. Wenn Sie Ihrem Projekt neue Quelldateien hinzufügen, aktualisieren Sie die Abhängigkeiten des Testprojekts, um die entsprechenden Objektdateien einzuschließen.

Hinzufügen von #include-Direktiven für Headerdateien

Fügen Sie als Nächstes in der CPP-Datei in Ihrem Komponententest eine #include-Direktive für sämtliche Headerdateien hinzu, die die Typen und Funktionen deklarieren, die Sie testen möchten. Geben Sie #include " ein, um IntelliSense zu aktivieren, das Sie bei der Auswahl unterstützt. Wiederholen Sie dies für weitere Header.

Screenshot of the Solution Explorer showing an #include directive being added with IntelliSense highlighting a header file for inclusion.

Um nicht in jede include-Anweisung in der Quelldatei den vollständigen Pfad eingeben zu müssen, fügen Sie die erforderlichen Ordner unter Projekt>Eigenschaften>C/C++>Allgemein>Zusätzliche Includeverzeichnisse hinzu.

Schreiben von Testmethoden

Hinweis

In diesem Abschnitt wird die Syntax von Microsoft Unittest-Frameworks für C/C++ dargestellt. Die entsprechende Dokumentation finden Sie hier: Referenz für die API „Microsoft.VisualStudio.TestTools.CppUnitTestFramework“ Die Dokumentation zu Google Test finden Sie unter Google Test Primer (Einführung in Google Test). Die Dokumentation zu Boost.Test finden Sie unter Boost Test Library: The Unit Test Framework (Boost Test-Bibliothek: Das Framework für Komponententests).

Die .cpp-Datei im Testprojekt enthält eine Stubklasse und eine Methode, die für Sie definiert sind. Sie zeigen ein Beispiel für das Schreiben von Testcode. Die Signaturen nutzen die Makros TEST_CLASS und TEST_METHOD. Deshalb können Sie die Methoden über das Fenster Test-Explorer finden.

Screenshot of the Test Explorer window that shows the unittest1.cpp code file containing a stub class and method using the TEST_CLASS and TEST_METHOD macros.

TEST_CLASS und TEST_METHOD sind Teil des nativen Microsoft-Testframeworks. Der Test-Explorer erkennt Testmethoden in anderen unterstützten Frameworks auf dieselbe Weise.

Das Makro TEST_METHOD gibt „Void“ zurück. Um ein Testergebnis zu erhalten, prüfen Sie mithilfe der statischen Methode in der Assert-Klasse die tatsächlichen Ergebnisse anhand der erwarteten Ergebnissen. Im folgenden Beispiel wird angenommen, dass MyClass über einen Konstruktor verfügt, der einen std::string akzeptiert. Dieses Beispiel zeigt, wie Sie testen können, ob der Konstruktor die Klasse wie erwartet initialisiert:

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

Im vorstehenden Beispiel bestimmt das Ergebnis des Aufrufs Assert::AreEqual, ob der Test erfolgreich ausgeführt werden kann 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 den Testbesitzer, die Priorität und andere Informationen anzugeben. Sie können diese Werte verwenden, um Tests im Test-Explorer zu sortieren und in Gruppen zu unterteilen. Weitere Informationen finden Sie unter Run unit tests with Test Explorer (Ausführen von Komponententests mit dem Test-Explorer).

Tests ausführen

  1. Klicken Sie im Menü Test auf Windows>Test-Explorer. In der folgenden Abbildung wird ein Testprojekt dargestellt, für das noch keine Tests ausgeführt wurden.

    Test Explorer before running tests

    Hinweis

    Die CTest-Integration für den Test-Explorer ist noch nicht verfügbar. Führen Sie CTest-Tests über das Hauptmenü von CMake aus.

  2. 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.

  3. Klicken Sie im Test-Explorer auf Alle ausführen, oder wählen Sie die 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. Nach dem Ausführen aller Tests werden im Fenster die bestandenen und die nicht bestandenen Tests angezeigt.

    Test Explorer after tests are run

Zu nicht bestandenen Tests werden in einer Meldung Details angezeigt, die Ihnen dabei helfen sollen, den Grund für das Problem zu finden. Klicken Sie mit der rechten Maustaste auf den fehlgeschlagenen Test, damit ein Popupmenü angezeigt wird. Wählen Sie Debuggen aus, um die Funktion zu durchlaufen, bei der der Fehler aufgetreten ist.

Weitere Informationen zur Verwendung des Test-Explorers finden Sie unter Ausführen von Komponententests mit dem Test-Explorer.

Weitere Informationen zu Komponententests finden Sie unter Grundlagen zum Komponententest.

Verwenden von CodeLens

Visual Studio 2017 und höher (Editionen Professional und Enterprise)

Mit CodeLens können Sie sich den Status eines Komponententests ansehen, ohne dazu den Code-Editor verlassen zu müssen.

Initialisieren Sie CodeLens für ein C++-Komponententestprojekt mit einer der folgenden Möglichkeiten:

  • Bearbeiten und erstellen Sie Ihr Testprojekt oder Ihre -projektmappe.
  • Erstellen Sie Ihr Projekt oder die Projektmappe erneut.
  • Führen Sie Tests im Fenster Test-Explorer aus.

Nach der Initialisierung werden Statussymbole zu jedem Komponententest angezeigt.

C++ CodeLens Icons

Klicken Sie auf das Symbol, um weitere Informationen zu erhalten oder den Komponententest auszuführen oder zu debuggen:

C++ CodeLens Run and Debug