Megosztás a következőn keresztül:


Írjon egységteszteket C/C++ nyelven a Visual Studio-ban

A C++ egységteszteket a Test Explorer ablakával írhatja és futtathatja. Ugyanúgy működik, mint más nyelvek esetében. További információ az Test Explorerhasználatáról: Egységtesztek futtatása a Test Explorerhasználatával.

Jegyzet

Egyes funkciók, például az élőegység-tesztelés, a kódolt felhasználói felületi tesztek és az IntelliTest nem támogatottak a C++-ban.

A Visual Studio ezeket a C++ tesztkörnyezeteket tartalmazza további letöltések nélkül:

  • Microsoft egységtesztelő keretrendszer C++-hoz
  • Google Test
  • Boost.Test
  • CTest

Használhatja a telepített keretrendszereket, vagy írhat saját tesztadaptert a Visual Studióban használni kívánt keretrendszerhez. A tesztadapter integrálja az egységteszteket a Test Explorer ablakba. Számos nem Microsoft-adapter érhető el a Visual Studio Marketplace. További információ: Egységteszt-keretrendszerek telepítése.

  • Visual Studio 2017 és újabb verziók (Professional és Enterprise)

    A C++ egységtesztelési projektek támogatják CodeLens.

  • Visual Studio 2017 és újabb verziók (minden kiadás)

    • A Google Tesztadapter alapértelmezett összetevőként szerepel a C++-szal végzett asztali fejlesztési munkaterhelésben. Rendelkezik egy projektsablonnal, amelyet hozzáadhat egy megoldáshoz. Kattintson a jobb gombbal a megoldáscsomópontra Megoldáskezelő, és válassza >Új projekt hozzáadása parancsot a helyi menüben a projektsablon hozzáadásához. Emellett az Eszközök>Beállításokhasználatával konfigurálható beállításokat is kínál. További információért lásd: Hogyan használjuk a Google Testet a Visual Studio.

    • Boost.Test a Asztali fejlesztés alapértelmezett összetevőjeként, C++ számítási feladattal. Integrálva van Test Explorer, de jelenleg nincs projektsablonja. Manuálisan kell konfigurálnia. További információért lásd: Hogyan használjuk a Boost.Testet a Visual Studio-ban.

    • CTest támogatása a C++ CMake-eszközök összetevő része, amely a C++ számítási feladattal rendelkező asztali fejlesztés része. További információkért lásd a következőt: Hogyan használjuk a CTestet a(z) Visual Studio-ban.

  • A Visual Studio korábbi verziói

    Letöltheti a Google Test adaptert és a Boost.Test Adapter bővítményeket a Visual Studio Marketplace-en. Találja meg őket a Boost.Test tesztadapterén és a Google Test tesztadapterén.

Borravaló

A Copilot /tests perjel parancsot is használhatja egységtesztek létrehozására a kódból. Beírhat például /tests using Boost framework a Boost.Test tesztek létrehozásához. További információért lásd: A perjelparancsok használata a Copilot csevegőben.

Alapszintű tesztelési munkafolyamat

Az alábbi szakaszok a C++ egységtesztelés első lépéseit mutatják be. Az alapkonfiguráció a Microsoft és a Google Test keretrendszer esetében is hasonló. A Boost.Test használatához manuálisan kell létrehoznia egy tesztprojektet.

Tesztprojekt létrehozása a Visual Studio 2022-ben

Egységtesztek definiálása és futtatása egy vagy több tesztprojektben. A tesztprojektek létrehoznak egy külön alkalmazást, amely meghívja a kódot a végrehajtható fájlban, és jelentést készít a viselkedéséről. Hozzon létre tesztprojekteket a tesztelni kívánt kóddal megegyező megoldásban.

Új tesztprojekt hozzáadása meglévő megoldáshoz:

  1. Kattintson a jobb gombbal a Megoldás csomópontra Megoldáskezelő.
  2. A helyi menüben válassza a(z) >Új projekt hozzáadásalehetőséget.
  3. Állítsa be a Nyelvet C++ -re, majd írja be a tesztet a keresőmezőbe. Az alábbi képernyőképen a C++ Asztali fejlesztés és a UWP-fejlesztési számítási feladat telepítésekor elérhető tesztprojektek láthatók:

Képernyőkép az Új projekt hozzáadása ablakról a Visual Studio 2022-ben kiválasztott C++ lehetőséggel.

Tesztprojekt létrehozása a Visual Studio 2019-ben

Teszteket definiálhat és futtathat egy vagy több tesztprojekten belül. Hozza létre a projekteket ugyanabban a megoldásban, mint a tesztelni kívánt kód.

Új tesztprojekt hozzáadása meglévő megoldáshoz:

  1. Kattintson a jobb gombbal a Megoldás csomópontra Megoldáskezelő.
  2. A helyi menüben válassza a(z) >Új projekt hozzáadásalehetőséget.
  3. Állítsa be a Nyelvet C++ -re, majd írja be a tesztet a keresőmezőbe. Az alábbi képernyőképen a C++ Asztali fejlesztés és a UWP-fejlesztési számítási feladat telepítésekor elérhető tesztprojektek láthatók:

Képernyőkép az Új projekt hozzáadása ablakról a Visual Studio 2019-ben kiválasztott C++ lehetőséggel.

Hivatkozás létrehozása más projektekre a megoldásban

A tesztelt projekt függvényeihez való hozzáférés engedélyezéséhez adjon hozzá egy hivatkozást a tesztprojekt projektjéhez. A Megoldáskezelőbennyissa meg a tesztprojektjét. Kattintson a jobb gombbal a Hivatkozások elemre, majd válassza ki a >Hivatkozás Hozzáadásalehetőséget. A Hivatkozás hozzáadása párbeszédpanelen válassza ki a tesztelni kívánt projekteket.

A képernyőkép a Visual Studio 2022 Hivatkozás hozzáadása párbeszédablakot mutatja.

A képernyőképen a Visual Studio 2019 Hivatkozás hozzáadása párbeszédpanel látható.

Ha a tesztkód nem exportálja a tesztelni kívánt függvényeket, adja hozzá a kimeneti .obj vagy .lib fájlokat a tesztprojekt függőségeihez. További információ: A tesztek csatolása az objektum- vagy tárfájlokhoz. Ne tartalmazzon olyan objektumfájlokat, amelyek main függvénnyel vagy más szokásos belépési ponttal rendelkeznek, például wmain, WinMainvagy DllMain. Amikor új forrásfájlokat ad hozzá a projekthez, frissítse a tesztprojekt függőségeit úgy, hogy azok tartalmazzák a megfelelő objektumfájlokat.

#include-irányelvek hozzáadása fejlécfájlokhoz

Az egységteszt .cpp fájlban adjon hozzá egy #include utasítást minden olyan fejlécfájlhoz, amely deklarálja a tesztelni kívánt típusokat és függvényeket. Írja be a #include "-t, majd az IntelliSense aktiválódik, hogy segítsen választani. Ismételje meg az összes további fejléc esetén.

Képernyőkép a Megoldáskezelőről egy #include utasítással, amelyben az IntelliSense kiemel egy fejlécfájlt a Visual Studio 2022-ben.

Képernyőkép a Megoldáskezelőről egy #include utasítással, amelyben az IntelliSense kiemel egy fejlécfájlt a Visual Studio 2019-ben.

Borravaló

Ha el szeretné kerülni, hogy minden belefoglalási utasításba írja be a teljes elérési utat a forrásfájlban, adja hozzá a szükséges mappákat Project>Properties>C/C++>Általános>További belefoglalási könyvtárak.

Írási tesztelési módszerek

Jegyzet

Ez a szakasz a C/C++-hoz készült Microsoft Unit Testing Framework szintaxisát mutatja be. További információ: Microsoft.VisualStudio.TestTools.CppUnitTestFramework API-referencia.

A Google Test dokumentációért lásd a Google Test alapozót. A Boost.Test-hez lásd, Boost Test library: The unit test framework.

A tesztprojektben lévő .cpp fájlhoz egy csonkosztály és metódus van definiálva. Példákat mutatnak a tesztkód írására. Az aláírások a TEST_CLASS és TEST_METHOD makrókat használják, így a metódusok a Test Explorer ablakából felderíthetők.

Képernyőkép egy stub osztályt és metódust jelenít meg a Visual Studio 2022 TEST_CLASS és TEST_METHOD makróinak használatával.

Képernyőkép egy stub osztályt és metódust jelenít meg a Visual Studio 2019 TEST_CLASS és TEST_METHOD makróinak használatával.

TEST_CLASS és TEST_METHOD a Microsoft Native Test Framework része. Test Explorer hasonló módon felderíti a tesztelési módszereket más támogatott keretrendszerekben.

A TEST_METHOD ürességet ad vissza. Teszteredmény létrehozásához a Assert osztály statikus metódusaival tesztelje a tényleges eredményeket a várt eredmények alapján. Az alábbi példában tegyük fel, hogy a MyClass-nak van egy konstruktora, amely elfogad egy std::string-et. Ez a példa bemutatja, hogyan tesztelheti, hogy a konstruktor a várt módon inicializálja az osztályt:

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

Az előző példában a Assert::AreEqual hívás eredménye határozza meg, hogy a teszt sikeres vagy sikertelen-e. A Assert osztály számos más módszert tartalmaz a várt eredmények és a tényleges eredmények összehasonlítására.

Tesztelési módszerekhez hozzáadhat tulajdonságokat, hogy megadja a teszttulajdonosokat, a prioritást és egyéb információkat. Ezután ezekkel az értékekkel rendezheti és csoportosíthatja a teszteket Test Explorer. További információ: Egységtesztek futtatása a Test Explorerhasználatával.

A tesztek futtatása

  1. A Tesztelés menüben válassza Test Explorerlehetőséget. Az alábbi ábra egy tesztprojektet mutat be a tesztek futtatása előtt.

    Képernyőkép a Test Explorerről, mielőtt teszteket futtat a Visual Studio 2022-ben.

    Képernyőkép a Test Explorerről, mielőtt teszteket futtat a Visual Studio 2019-ben.

    Jegyzet

    A CTest Test Explorer integrációja még nem érhető el. CTest-tesztek futtatása a CMake főmenüjében.

  2. Ha valamelyik teszt hiányzik az ablakból, hozza létre a tesztprojektet úgy, hogy a jobb gombbal a csomópontra kattint a Megoldáskezelőben, majd válassza a Build vagy Rebuildlehetőséget.

  3. A Test Explorerterületen válassza a Az összesfuttatása lehetőséget, vagy válassza ki a futtatni kívánt teszteket. Kattintson jobb gombbal egy tesztre az egyéb lehetőségek eléréséhez, beleértve a hibakeresési módban való futtatást, ha engedélyezve vannak a töréspontok. Az összes teszt futtatása után az ablak megjeleníti az átadott és a sikertelen teszteket.

    Képernyőkép a Test Explorer alkalmazásról a Tesztek futtatása után a Visual Studio 2022-ben.

    Képernyőkép a Tesztkezelőről a Tesztek futtatása után a Visual Studio 2019-ben.

Sikertelen tesztek esetén az üzenet olyan részleteket jelenít meg, amelyek segítenek az ok diagnosztizálásában. Kattintson a jobb gombbal a sikertelen tesztre egy előugró menü megjelenítéséhez. Válassza a Hibakeresés lehetőséget a hiba helyének lépésenkénti vizsgálatához.

Az Test Explorerhasználatával kapcsolatos további információkért lásd: Egységtesztek futtatása a Test Explorerhasználatával.

További információ az egységtesztelésről: Egységteszt alapjai.

A CodeLens használata

Visual Studio 2017 és újabb verziók (Professional és Enterprise kiadások)

CodeLens lehetővé teszi az egységteszt állapotának gyors megtekintését anélkül, hogy elhagyná a kódszerkesztőt.

Inicializálja a CodeLenst egy C++ egységtesztelési projekthez az alábbi módokon:

  • Szerkessze és hozza létre a tesztprojektet vagy -megoldást.
  • A projekt vagy megoldás újraépítése.
  • A teszteket a Test Explorer ablakából futtathatja.

A CodeLens inicializálása után az egyes egységtesztek fölött látható a tesztállapot ikonja.

Képernyőkép a Visual Studio 2022 C++ CodeLens ikonjairól.

Képernyőkép a Visual Studio 2019 C++ CodeLens ikonjairól.

További információkért válassza az ikont, vagy futtassa vagy hibakeresést hajtsa végre az egységtesztben:

A képernyőkép a C++ CodeLens ikont mutatja, miután részletekért kiválasztotta a Visual Studio 2022-ben.

Képernyőkép a C++ CodeLens ikonról, miután részletek megtekintésére kiválasztotta a Visual Studio 2019-ben.