Sdílet prostřednictvím


Psaní jednotkových testů pro C/C++ ve Visual Studio

Testy jednotek jazyka C++ můžete psát a spouštět pomocí okna Průzkumníka testů . Funguje stejně jako u jiných jazyků. Další informace o používání Průzkumníka testů naleznete v tématu Spouštění testů jednotek pomocí Průzkumníka testů.

Poznámka:

Některé funkce, jako je Live Unit Testing, programové testy uživatelského rozhraní a IntelliTest, nejsou podporované pro C++.

Visual Studio zahrnuje tyto testovací architektury C++, které nevyžadují žádné další stahování:

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

Můžete použít nainstalované architektury nebo napsat vlastní testovací adaptér pro libovolnou architekturu, kterou chcete použít v sadě Visual Studio. Adaptér testu integruje testy jednotek s oknem Průzkumníka testů . Na Visual Studio Marketplace je k dispozici několik adaptérů jiných společností než Microsoft. Další informace naleznete v tématu Instalace rozhraní pro testování jednotek.

  • Visual Studio 2017 a novější (Professional a Enterprise)

    Projekty testů jednotek jazyka C++ podporují CodeLens.

  • Visual Studio 2017 a novější (všechny edice)

    • Google Test Adapter je součástí výchozí součásti vývoje desktopových aplikací s úlohou C++ . Obsahuje šablonu projektu, kterou můžete přidat do řešení. V Průzkumníku řešení klikněte pravým tlačítkem myši na uzel řešení a v místní nabídce zvolte Přidat>nový projekt a přidejte šablonu projektu. Obsahuje také možnosti, které můžete konfigurovat pomocí možností nástroje>. Další informace naleznete v tématu Postupy: Použití aplikace Google Test v sadě Visual Studio.

    • Boost.Test je součástí výchozí součásti vývoje desktopových aplikací s úlohou C++ . Je integrovaná s Průzkumníkem testů, ale v současné době nemá šablonu projektu. Musíte ho nakonfigurovat ručně. Další informace naleznete v tématu Postupy: Použití Boost.Test v sadě Visual Studio.

    • Podpora CTest je součástí komponenty nástrojů C++ CMake, která je součástí vývoje desktopových aplikací s úlohou C++. Další informace naleznete v tématu Postup: Použít CTest ve Visual Studio.

  • Starší verze sady Visual Studio

    Adaptér Google Test a rozšíření Boost.Test Adapter si můžete stáhnout na webu Visual Studio Marketplace. Najděte je na testovacím adaptéru pro Boost.Test a Testovací adaptér pro Google Test.

Návod

K vygenerování jednotkových testů z kódu můžete také použít příkaz Copilot /tests slash. Můžete například zadat /tests using Boost framework , aby se vygenerovaly testy Boost.Test. Další informace naleznete viz Použití příkazů lomítka v Copilot Chatu.

Základní testovací pracovní postup

Následující části ukazují základní kroky, které vám pomůžou začít s testováním částí C++. Základní konfigurace je podobná pro rozhraní Microsoftu i Google Test. Boost.Test vyžaduje ruční vytvoření testovacího projektu.

Vytvoření testovacího projektu v sadě Visual Studio 2022

Definujte a spouštějte testy jednotek v jednom nebo více testovacích projektech. Testovací projekt vytvoří samostatnou aplikaci, která volá kód ve vašem spustitelném souboru a hlásí jeho chování. Vytvořte projekty testů ve stejném řešení jako kód, který chcete testovat.

Přidání nového testovacího projektu do existujícího řešení:

  1. V Průzkumníku řešení klikněte pravým tlačítkem na uzel Řešení.
  2. V místní nabídce zvolte Přidat>nový projekt.
  3. Nastavte jazyk na C++ a do vyhledávacího pole zadejte test . Následující snímek obrazovky ukazuje testovací projekty, které jsou k dispozici při vývoji desktopových aplikací pomocí jazyka C++ a úlohy vývoje pro UPW :

Snímek obrazovky ukazuje okno Přidat nový projekt s vybraným jazykem C++ v sadě Visual Studio 2022.

Vytvoření testovacího projektu v sadě Visual Studio 2019

Definujte a spouštějte testy uvnitř jednoho nebo více testovacích projektů. Vytvořte projekty ve stejném řešení jako kód, který chcete testovat.

Přidání nového testovacího projektu do existujícího řešení:

  1. V Průzkumníku řešení klikněte pravým tlačítkem na uzel Řešení.
  2. V místní nabídce zvolte Přidat>nový projekt.
  3. Nastavte jazyk na C++ a do vyhledávacího pole zadejte test . Následující snímek obrazovky ukazuje testovací projekty, které jsou k dispozici při vývoji desktopových aplikací pomocí jazyka C++ a úlohy vývoje pro UPW :

Snímek obrazovky ukazuje okno Přidat nový projekt s vybraným jazykem C++ v sadě Visual Studio 2019.

Vytváření odkazů na jiné projekty v řešení

Pokud chcete povolit přístup k funkcím v projektu pod testem, přidejte do projektu v testovacím projektu odkaz. V Průzkumníku řešení rozbalte testovací projekt. Klikněte pravým tlačítkem myši na Odkazy a pak vyberte Přidat>odkaz. V dialogovém okně Přidat odkaz zvolte projekty, které chcete testovat.

Na snímku obrazovky je dialogové okno Přidat referenci v sadě Visual Studio 2022

Snímek obrazovky ukazuje dialogové okno Přidat referenci v sadě Visual Studio 2019.

Pokud testovací kód neexportuje funkce, které chcete testovat, přidejte výstup .obj nebo .lib soubory do závislostí testovacího projektu. Další informace naleznete v tématu Propojení testů s objektem nebo soubory knihovny. Nezahrnujte soubory objektů, které mají main funkci nebo jiný standardní vstupní bod, například wmain, WinMainnebo DllMain. Když do projektu přidáte nové zdrojové soubory, aktualizujte závislosti testovacího projektu tak, aby zahrnovaly odpovídající soubory objektů.

Přidání direktiv #include pro soubory hlaviček

Do testovacího .cpp souboru jednotek přidejte direktivu #include pro všechny soubory hlaviček, které deklarují typy a funkce, které chcete testovat. Zadejte #include ", a pak se aktivuje IntelliSense, který vám pomůže vybrat. Opakujte pro všechna další záhlaví.

Snímek obrazovky znázorňující Průzkumníka řešení s příkazem #include se zvýrazněným souborem hlaviček v sadě Visual Studio 2022

Snímek obrazovky znázorňující Průzkumníka řešení s příkazem #include se zvýrazněným souborem hlaviček v sadě Visual Studio 2019

Návod

Abyste nemuseli zadávat úplnou cestu do každého příkazu include ve zdrojovém souboru, přidejte požadované složky do Projekt>Vlastnosti>C/C++>Obecné>Další adresáře pro zahrnutí.

Psaní testovacích metod

Poznámka:

Tato část ukazuje syntaxi pro rozhraní Microsoft Unit Testing Framework pro C/C++. Další informace naleznete v tématu Microsoft.VisualStudio.TestTools.CppUnitTestFramework API reference.

Dokumentaci ke službě Google Test naleznete v úvodu k Google Test. Pro Boost.Test viz také Boost Test library: The unit test framework.

Soubor .cpp ve vašem testovacím projektu má definovanou třídu a metodu typu stub. Ukazují příklad psaní testovacího kódu. Podpisy používají makra TEST_CLASS a TEST_METHOD, která zjišťují metody z okna Průzkumníka testů .

Snímek obrazovky ukazuje třídu a metodu kostry pomocí makra TEST_CLASS a TEST_METHOD ve Visual Studiu 2022.

Snímek obrazovky ukazuje třídu zástupce (stub) a metodu používající makra TEST_CLASS a TEST_METHOD v aplikaci Visual Studio 2019.

TEST_CLASS a TEST_METHOD jsou součástí rozhraní Microsoft Native Test Framework. Průzkumník testů zjišťuje testovací metody v jiných podporovaných architekturách podobným způsobem.

TEST_METHOD nevrací žádnou hodnotu. Chcete-li vytvořit výsledek testu, použijte statické metody ve Assert třídě k otestování skutečných výsledků s očekávanými výsledky. V následujícím příkladu předpokládejme, že MyClass má konstruktor, který přebírá std::string. Tento příklad ukazuje, jak můžete otestovat, že konstruktor inicializuje třídu očekávaným způsobem:

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

V předchozím příkladu Assert::AreEqual výsledek volání určuje, zda test projde nebo selže. Třída Assert obsahuje mnoho dalších metod pro porovnání očekávaných výsledků se skutečnými výsledky.

K testovacím metodám můžete přidat vlastnosti , které určují vlastníky testů, prioritu a další informace. Tyto hodnoty pak můžete použít k řazení a seskupování testů v Průzkumníku testů. Další informace najdete v tématu Spouštění testů jednotek pomocí Průzkumníka testů.

Spuštění testů

  1. V nabídce Test zvolte Průzkumníka testů. Následující obrázek ukazuje testovací projekt před spuštěním testů.

    Snímek obrazovky ukazuje Průzkumníka testů před spuštěním testů v sadě Visual Studio 2022.

    Snímek obrazovky s Průzkumníkem testů před spuštěním testů v sadě Visual Studio 2019

    Poznámka:

    Integrace CTest s Průzkumníkem testů ještě není k dispozici. Spusťte testy CTest z hlavní nabídky CMake.

  2. Pokud v okně chybí některý z testů, sestavte testovací projekt tak, že v Průzkumníku řešení kliknete pravým tlačítkem na jeho uzel a zvolíte Sestavení nebo znovu sestavit.

  3. V Průzkumníku testů zvolte Spustit vše nebo vyberte konkrétní testy, které chcete spustit. Klikněte pravým tlačítkem myši na test pro další možnosti, včetně spuštění v režimu ladění s povolenými zarážky. Po spuštění všech testů se v okně zobrazí testy, které prošly, a testy, které selhaly.

    Snímek obrazovky ukazuje Průzkumníka testů po spuštění testů v sadě Visual Studio 2022.

    Snímek obrazovky ukazuje Průzkumníka testů po spuštění testů v sadě Visual Studio 2019.

V případě neúspěšných testů zobrazí zpráva podrobnosti, které pomáhají diagnostikovat příčinu. Klikněte pravým tlačítkem myši na neúspěšný test pro otevření kontextové nabídky. Zvolte Ladit a projděte si funkci, ve které došlo k chybě.

Další informace o používání Průzkumníka testů najdete v tématu Spouštění testů jednotek pomocí Průzkumníka testů.

Další informace o testování jednotek naleznete v tématu Základy testování částí.

Použití CodeLens

Visual Studio 2017 a novější (edice Professional a Enterprise)

CodeLens umožňuje rychle zobrazit stav testu jednotek bez opuštění editoru kódu.

Inicializace CodeLens pro projekt testování jednotek C++ některým z následujících způsobů:

  • Upravte a sestavte testovací projekt nebo řešení.
  • Znovu sestavte projekt nebo řešení.
  • Spusťte testy z okna Průzkumníka testů .

Po inicializaci CodeLensu se nad každým testem jednotek zobrazí ikony stavu testu.

Snímek obrazovky znázorňující ikony C++ CodeLens v sadě Visual Studio 2022

Snímek obrazovky znázorňující ikony C++ CodeLens v sadě Visual Studio 2019

Zvolte ikonu pro další informace nebo spusťte nebo ladíte test jednotek:

Snímek obrazovky ukazuje ikonu C++ CodeLens po jejím výběru pro zobrazení podrobností v sadě Visual Studio 2022.

Snímek obrazovky ukazuje ikonu C++ CodeLens po tom, co ji vyberete pro zobrazení podrobností v sadě Visual Studio 2019.