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:
- Klik met de rechtermuisknop op het knooppunt Oplossing in Solution Explorer.
- Kies in het contextmenu Toevoegen>Nieuw Project.
- 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:
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:
- Klik met de rechtermuisknop op het knooppunt Oplossing in Solution Explorer.
- Kies in het contextmenu Toevoegen>Nieuw Project.
- 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:
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.
Koppelen aan object- of bibliotheekbestanden
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
, WinMain
of 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.
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.
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::string
gebruikt. 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
Kies op het menu Test de optie Test Explorer. In de volgende afbeelding ziet u een testproject voordat u tests uitvoert.
Notitie
CTest-integratie met Test Explorer- is nog niet beschikbaar. Voer CTest-tests uit vanuit het hoofdmenu van CMake.
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.
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.
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.
Kies het pictogram voor meer informatie of om de eenheidstest uit te voeren of fouten op te sporen: