Sdílet prostřednictvím


Zápis testů jednotek pro C/C++ v sadě 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 Marketplaceje 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í. Klikněte pravým tlačítkem na uzel řešení v Průzkumník řešení a v místní nabídce zvolte Přidat> a přidejte šablonu projektu. Má také možnosti, které můžete konfigurovat pomocí nástroje Nástroje>Možnosti. 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 Postupy: Použití CTest v sadě 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.

Tip

K vygenerování testů jednotek z kódu můžete použít také příkaz Copilot /tests slash. Můžete například zadat /tests using Boost framework , aby se vygenerovaly testy Boost.Test. Další informace naleznete v tématu Použití lomítko příkazy 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. Klikněte pravým tlačítkem na uzel Řešení v Průzkumník ř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 instalaci úloh Vývoj desktopových aplikací s využitím jazyka C++ a Vývoj UWP.

Snímek obrazovky ukazuje okno Přidat nový projekt s vybranou možností 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. Klikněte pravým tlačítkem na uzel Řešení v Průzkumník řešení.
  2. V místní nabídce zvolte Přidat>Nový projekt.
  3. Nastavte jazyk na jazyka C++ a do vyhledávacího pole zadejte testovací. Následující snímek obrazovky ukazuje testovací projekty, které jsou k dispozici při vývoje desktopových aplikací pomocí jazyka C++ a úlohy vývoj pro UPW:

Snímek obrazovky ukazuje okno Přidat nový projekt s vybranou možností 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. Pravým tlačítkem myši klepněte na Odkazy a potom vyberte Přidat>Odkaz. V dialogovém okně Přidat odkaz zvolte projekty, které chcete testovat.

Snímek obrazovky zobrazuje dialogové okno Přidat odkaz v sadě Visual Studio 2022.

Pokud testovací kód neexportuje funkce, které chcete testovat, přidejte výstupní .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 souboru .cpp testu jednotek přidejte direktivu #include pro všechny soubory hlaviček, které deklarují typy a funkce, které chcete testovat. Zadejte #include "a pak intelliSense aktivuje, aby vám pomohlo zvolit. Opakujte pro další hlavičky.

snímek obrazovky ukazuje Průzkumníka řešení s příkazem #include se zvýrazněným záhlavím souboru v sadě Visual Studio 2022.

Tip

Abyste nemuseli zadávat úplnou cestu do každého příkazu include ve zdrojovém souboru, přidejte požadované složky do >adresářů C/C++>General Additional>Include.

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 Boost Test library: The unit test framework.

Soubor .cpp v testovacím projektu má definovanou zástupnou třídu a metodu. 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 zástupnou třídu a zástupnou metodu použití maker TEST_CLASS a TEST_METHOD v sadě Visual Studio 2022.

Snímek obrazovky ukazuje třídu a metodu stub pomocí makra TEST_CLASS a TEST_METHOD v sadě 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 vrátí hodnotu void. 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ádejmeMyClass, že 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 Test Explorer. 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 ukazuje Průzkumníka 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ík ř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 Test Explorer po spuštění testů v sadě Visual Studio 2022.

    Snímek obrazovky ukazuje Test Explorer po spuštění testů ve 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 místní 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 ukazuje ikony C++ CodeLens v sadě Visual Studio 2019.

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

Snímek obrazovky zobrazuje ikonu C++ CodeLens po výběru podrobností v sadě Visual Studio 2022.