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.
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.
Pokud chcete do existujícího řešení přidat nový testovací projekt,
- Klikněte pravým tlačítkem na uzel Řešení v Průzkumník řešení.
- V místní nabídce zvolte Přidat>nový projekt.
- 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:
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,
- Klikněte pravým tlačítkem na uzel Řešení v Průzkumník řešení.
- V místní nabídce zvolte Přidat>nový projekt.
- 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:
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.
Propojení s objekty nebo soubory knihovny
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
, WinMain
nebo 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.
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á definovanou třídu a metodu zástupných procedur. 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ů.
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ů
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.
Poznámka:
Integrace CTest s Průzkumníkem testů ještě není k dispozici. Spusťte testy CTest z hlavní nabídky CMake.
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.
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.
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.
Zvolte ikonu pro další informace nebo spusťte nebo ladíte test jednotek: