Delen via


Eenheidstests schrijven voor C/C++ in Visual Studio

U kunt uw C++-eenheidstests schrijven en uitvoeren met behulp van het venster Test Explorer. Het werkt net als voor andere talen. Zie Eenheidstests uitvoeren met Test Explorervoor meer informatie over het gebruik van Test Explorer.

Notitie

Sommige functies, zoals Live Unit Testing, Coded UI Tests en IntelliTest, worden niet ondersteund voor C++.

Visual Studio bevat deze C++-testframeworks zonder dat extra downloads nodig zijn.

  • Microsoft Unit Testing Framework voor C++
  • Google Test
  • Boost.Test
  • CTest

U kunt de geïnstalleerde frameworks gebruiken of uw eigen testadapter schrijven voor elk framework dat u wilt gebruiken in Visual Studio. Een testadapter integreert eenheidstests met het venster Test Explorer. Er zijn verschillende niet-Microsoft-adapters beschikbaar op de Visual Studio Marketplace. Raadpleeg Installeren van unittest-frameworksvoor meer informatie.

  • Visual Studio 2017 en hoger (Professional en Enterprise)

    C++ eenheidstestprojecten ondersteunen CodeLens-.

  • Visual Studio 2017 en hoger (alle edities)

    • Google Test Adapter is opgenomen als een standaardonderdeel van de ontwikkeling van Desktop met C++ workload. Het bevat een projectsjabloon die u aan een oplossing kunt toevoegen. Klik met de rechtermuisknop op het oplossingsknooppunt in Solution Explorer en kies Toevoegen>Nieuw project in het snelmenu om de projectsjabloon toe te voegen. Het bevat ook opties die u kunt configureren door gebruik te maken van Extra>Opties. Zie Procedures: Google Test gebruiken in Visual Studiovoor meer informatie.

    • Boost.Test is opgenomen als standaardonderdeel van de ontwikkeling van Desktop met C++ workload. Het is geïntegreerd met Test Explorer-, maar heeft momenteel geen projectsjabloon. U moet deze handmatig configureren. Zie Procedure: Boost.Test gebruiken in Visual Studiovoor meer informatie.

    • CTest ondersteuning is opgenomen in de C++ CMake-hulpprogramma's component, dat deel uitmaakt van de Desktop-ontwikkeling met C++ werkbelasting. Zie Procedures: CTest gebruiken in Visual Studiovoor meer informatie.

  • Eerdere versies van Visual Studio

    U kunt de Google Test-adapter en Boost.Test Adapter-extensies downloaden op Visual Studio Marketplace. Zoek ze op Test-adapter voor Boost.Test en Test-adapter voor Google Test.

Tip

U kunt ook Copilot gebruiken met de slash-opdracht /tests om eenheidstests te genereren vanuit code. U kunt bijvoorbeeld /tests using Boost framework typen om Boost.Test-tests te genereren. Voor meer informatie, zie Slash-opdrachten gebruiken in Copilot Chat.

Eenvoudige testwerkstroom

In de volgende secties ziet u de basisstappen om aan de slag te gaan met het testen van C++-eenheden. De basisconfiguratie is vergelijkbaar voor zowel de Microsoft- als Google Test-frameworks. Boost.Test vereist dat u handmatig een testproject maakt.

Een testproject maken in Visual Studio 2022

Eenheidstests definiëren en uitvoeren binnen een of meer testprojecten. Een testproject maakt een afzonderlijke app die de code in uw uitvoerbare bestand aanroept en rapporteert over het gedrag ervan. Maak testprojecten in dezelfde oplossing als de code die u wilt testen.

Een nieuw testproject toevoegen aan een bestaande oplossing:

  1. Klik met de rechtermuisknop op het knooppunt Oplossing in Solution Explorer.
  2. Kies in het contextmenu Toevoegen>Nieuw Project.
  3. Stel Language in op C++ en typ test in het zoekvak. In de volgende schermopname ziet u de testprojecten die beschikbaar zijn wanneer de Desktop Development met C++ en de UWP Development workload zijn geïnstalleerd:

Schermopname toont het venster Een nieuw project toevoegen met C++ geselecteerd in Visual Studio 2022.

Een testproject maken in Visual Studio 2019

Definieer en voer tests uit binnen een of meer testprojecten. Maak de projecten in dezelfde oplossing als de code die u wilt testen.

Een nieuw testproject toevoegen aan een bestaande oplossing:

  1. Klik met de rechtermuisknop op het knooppunt Oplossing in Solution Explorer.
  2. Kies in het contextmenu Toevoegen>Nieuw Project.
  3. Stel Language in op C++ en typ test in het zoekvak. In de volgende schermopname ziet u de testprojecten die beschikbaar zijn wanneer de Desktop Development met C++ en de UWP Development workload zijn geïnstalleerd:

Schermopname toont het venster Een nieuw project toevoegen met C++ geselecteerd in Visual Studio 2019.

Verwijzingen maken naar andere projecten in de oplossing

Als u de toegang tot de functies in het project onder test wilt inschakelen, voegt u een verwijzing toe naar het project in uw testproject. Vouw in Solution Explorerhet testproject uit. Klik met de rechtermuisknop op Verwijzingen en selecteer >Verwijzingtoevoegen. Kies in het dialoogvenster Verwijzing toevoegen de projecten die u wilt testen.

Schermopname toont het dialoogvenster Verwijzing toevoegen in Visual Studio 2022.

Als de testcode de functies die u wilt testen niet exporteert, voegt u de uitvoerbestanden .obj of .lib toe aan de afhankelijkheden van het testproject. Zie De tests koppelen aan de object- of bibliotheekbestandenvoor meer informatie. Neem geen objectbestanden op met een main functie of een ander standaardinvoerpunt, zoals wmain, WinMainof DllMain. Wanneer u nieuwe bronbestanden aan uw project toevoegt, werkt u de afhankelijkheden van het testproject bij om de bijbehorende objectbestanden op te nemen.

Instructies voor #include toevoegen voor koptekstbestanden

Voeg in uw eenheidstest .cpp bestand een #include instructie toe voor headerbestanden die de typen en functies declareren die u wilt testen. Typ #include "en activeer vervolgens IntelliSense om u te helpen kiezen. Herhaal dit voor eventuele kopteksten.

Schermopname toont Solution Explorer met een #include-instructie waarbij IntelliSense een headerbestand markeert in Visual Studio 2022.

Tip

Als u wilt voorkomen dat u het volledige pad in elke insluitingsinstructie in het bronbestand moet typen, voegt u de vereiste mappen toe in Project>Eigenschappen>C/C++>Algemeen>Aanvullende mappen toevoegen.

Testmethoden schrijven

Notitie

In deze sectie ziet u de syntaxis voor het Microsoft Unit Testing Framework voor C/C++. Zie Microsoft.VisualStudio.TestTools.CppUnitTestFramework API referencevoor meer informatie.

Zie voor de Google Test-documentatie de Google Test primer. Zie voor Boost.Test Boost Test-bibliotheek: Het testframework voor eenheden.

Het .cpp-bestand in uw testproject heeft een stub-klasse en -methode die voor u is gedefinieerd. Ze laten een voorbeeld zien van het schrijven van testcode. De handtekeningen maken gebruik van de macro's TEST_CLASS en TEST_METHOD, waardoor de methoden kunnen worden gedetecteerd in het Test Explorer-venster.

Schermopname toont een stub-klasse en -methode met behulp van de TEST_CLASS en TEST_METHOD macro's in Visual Studio 2022.

Schermopname toont een stub-klasse en -methode met behulp van de TEST_CLASS en TEST_METHOD macro's in Visual Studio 2019.

TEST_CLASS en TEST_METHOD maken deel uit van de Microsoft Native Test Framework-. Test Explorer testmethoden op een vergelijkbare manier detecteert in andere ondersteunde frameworks.

Een TEST_METHOD retourneert void. Als u een testresultaat wilt produceren, gebruikt u de statische methoden in de Assert klasse om de werkelijke resultaten te testen op basis van de verwachte resultaten. In het volgende voorbeeld wordt ervan uitgegaan dat MyClass een constructor heeft die een std::stringgebruikt. In dit voorbeeld ziet u hoe u kunt testen of de constructor de klasse initialiseert zoals u verwacht:

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

In het vorige voorbeeld bepaalt het resultaat van de Assert::AreEqual aanroep of de test is geslaagd of mislukt. De Assert-klasse bevat veel andere methoden om verwachte resultaten te vergelijken met werkelijke resultaten.

U kunt eigenschappen toevoegen aan testmethoden om testeigenaren, prioriteit en andere informatie aan te geven. Vervolgens kunt u deze waarden gebruiken om tests te sorteren en te groeperen in Test Explorer. Zie Eenheidstests uitvoeren met Test Explorervoor meer informatie.

De tests uitvoeren

  1. Kies op het menu Test de optie Test Explorer. In de volgende afbeelding ziet u een testproject voordat u tests uitvoert.

    Schermopname toont Test Explorer voordat u tests uitvoert in Visual Studio 2022.

    Schermopname toont Test Explorer voordat u tests uitvoert in Visual Studio 2019.

    Notitie

    CTest-integratie met Test Explorer- is nog niet beschikbaar. Voer CTest-tests uit vanuit het hoofdmenu van CMake.

  2. Als een van uw tests ontbreekt in het venster, bouwt u het testproject door met de rechtermuisknop op het knooppunt in Solution Explorer te klikken en Build of Rebuildte kiezen.

  3. Kies in Test Explorer, Alles uitvoeren, of selecteer de specifieke tests die u wilt uitvoeren. Klik met de rechtermuisknop op een test voor andere opties, waaronder het uitvoeren ervan in de foutopsporingsmodus met onderbrekingspunten ingeschakeld. Nadat alle tests zijn uitgevoerd, worden in het venster de tests weergegeven die zijn geslaagd en de tests die zijn mislukt.

    schermopname toont Test Explorer nadat de tests zijn uitgevoerd in Visual Studio 2022.

    schermopname toont Test Explorer nadat de tests zijn uitgevoerd in Visual Studio 2019.

Voor mislukte tests worden in het bericht details weergegeven die helpen bij het vaststellen van de oorzaak. Klik met de rechtermuisknop op de mislukte test voor een snelmenu. Kies Foutopsporing om de functie te doorlopen waar de fout is opgetreden.

Zie Eenheidstests uitvoeren met Test Explorervoor meer informatie over het gebruik van Test Explorer.

Zie basisbeginselen van eenheidstestsvoor meer informatie over eenheidstests.

CodeLens gebruiken

Visual Studio 2017 en hoger (Professional- en Enterprise-edities)

CodeLens- kunt u snel de status van een eenheidstest zien zonder de code-editor te verlaten.

Initialiseer CodeLens voor een C++-eenheidstestproject op een van de volgende manieren:

  • Bewerk en bouw uw testproject of -oplossing.
  • Bouw uw project of oplossing opnieuw.
  • Voer tests uit vanuit het Test Explorer-venster.

Nadat u CodeLens hebt geïnitialiseerd, ziet u de teststatuspictogrammen boven elke eenheidstest.

Schermopname toont de C++ CodeLens-pictogrammen in Visual Studio 2019.

Kies het pictogram voor meer informatie of om de eenheidstest uit te voeren of fouten op te sporen:

schermopname toont het C++ CodeLens-pictogram nadat u het hebt geselecteerd voor meer informatie in Visual Studio 2022.