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 Marketplace je k dispozici několik adaptérů třetích stran. Další informace naleznete v tématu Instalace rozhraní pro testování jednotek třetích stran.

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>nový projekt a přidejte šablonu projektu. Obsahuje také možnosti, které můžete konfigurovat prostřednictvím možností nástrojů>. 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í být nakonfigurovaný 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.

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.

Pokud chcete do existujícího řešení přidat nový testovací projekt,

  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í obrázek ukazuje projekty testů, které jsou k dispozici při vývoji desktopových aplikací pomocí jazyka C++ a úlohy vývoje pro UPW:

C++ Test Projects in 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. Pokud chcete do existujícího řešení přidat nový testovací projekt,

  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í obrázek ukazuje projekty testů, které jsou k dispozici při vývoji desktopových aplikací pomocí jazyka C++ a úlohy vývoje pro UPW:

C++ Test Projects in 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ík řešení místní nabídky klikněte pravým tlačítkem myši na uzel testovacího projektu. Zvolte Přidat>odkaz. V dialogovém okně Přidat odkaz zvolte projekty, které chcete testovat.

Add reference

Pokud testovací kód neexportuje funkce, které chcete testovat, přidejte výstupní soubory .obj nebo .lib 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

Dále v 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.

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

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++. Dokumentuje se zde: 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á třídu a metodu zástupných procedur definovanou pro vás. 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ů.

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 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 Průzkumníka testů Systému Windows>. Následující obrázek ukazuje testovací projekt, jehož testy ještě nebyly spuštěny.

    Test Explorer before running tests

    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.

    Test Explorer after tests are run

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 uvidíte nad každým testem jednotek ikony stavu testu.

C++ CodeLens Icons

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

C++ CodeLens Run and Debug