Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az egységtesztek létrehozásával és futtatásával ellenőrizze, hogy a kód a várt módon működik-e. Ezt egységtesztelésnek nevezzük, mert a program funkcióit különálló tesztelhető viselkedésekre bontja, amelyeket önálló egységként tesztelhet. A Visual Studio Test Explorer rugalmas és hatékony módot kínál az egységtesztek futtatására és az eredmények Megtekintésére a Visual Studióban. A Visual Studio telepíti a Microsoft egységtesztelési keretrendszereit felügyelt és natív kódhoz. Egy egységtesztelési keretrendszer használatával egységteszteket hozhat létre, futtathatja őket, és jelentést készíthet ezeknek a teszteknek az eredményeiről. Futtassa újra az egységteszteket, amikor módosításokat végez annak ellenőrzéséhez, hogy a kód továbbra is megfelelően működik-e. A Visual Studio Enterprise ezt automatikusan elvégezheti az Élő egység tesztelésével, amely észleli a kódmódosítások által érintett teszteket, és gépelés közben futtatja őket a háttérben.
Az egységtesztelés a legnagyobb hatással van a kód minőségére, ha az a szoftverfejlesztési munkafolyamat szerves része. Amint megír egy függvényt vagy más alkalmazáskódblokkot, hozzon létre olyan egységteszteket, amelyek ellenőrzik a kód viselkedését a bemeneti adatok standard, határ- és helytelen eseteire válaszul, és amelyek ellenőrzik a kód által tett explicit vagy implicit feltételezéseket. A tesztalapú fejlesztéssel a kód írása előtt létre kell hoznia az egységteszteket, így az egységteszteket tervezési dokumentációként és funkcionális specifikációként is használhatja.
A Test Explorer olyan külső és nyílt forráskódú egység tesztelési keretrendszereket is futtathat, amelyek a Test Explorer bővítményeit implementálták. Ezek közül a keretrendszerek közül sok a Visual Studio Extension Manager és a Visual Studio katalógusán keresztül vehető fel. További információ: Harmadik féltől származó egységteszt-keretrendszerek telepítése.
Első lépések
Az egységtesztelésnek az a bemutatása, amely közvetlenül a kódolásba vezet, tekintse meg az alábbi cikkek egyikét:
Példa a banki megoldásra
Ebben a cikkben egy kitalált alkalmazás MyBank fejlesztését használjuk példaként. A cikkben ismertetett magyarázatok követéséhez nincs szükség a tényleges kódra. A tesztelési módszerek C#-ban vannak megírva, és a felügyelt kódhoz készült Microsoft Unit Testing Framework használatával jelennek meg. A fogalmak azonban könnyen átkerülnek más nyelvekre és keretrendszerekre.
Az alkalmazás tervezésének MyBank első kísérlete egy olyan fiókösszetevőt tartalmaz, amely egy egyéni fiókot és annak a bankkal való tranzakcióit, valamint egy adatbázis-összetevőt tartalmaz, amely az egyes fiókok összesítésének és kezelésének funkcióját jelöli.
Két projektet tartalmazó megoldást hozunk létre Bank :
AccountsBankDB
A projekt tervezésének Accounts első kísérlete egy olyan osztályt tartalmaz, amely alapszintű információkat tartalmaz egy fiókról, egy olyan felületet, amely bármilyen típusú fiók általános funkcióit határozza meg, például az eszközök letétbe helyezését és a fiókból való kivonását, valamint egy olyan osztályt, amely a kezelőfelületről származik, amely egy ellenőrző fiókot jelöl. A Accounts-projekteket a következő forrásfájlok létrehozásával kezdjük:
AccountInfo.cs egy fiók alapadatait határozza meg.
IAccount.cs meghatároz egy standard
IAccountfelületet egy fiókhoz, beleértve az eszközök letéti és kivonási módszereit, valamint a számla egyenlegének lekérését.CheckingAccount.cs tartalmazza azt az
CheckingAccountosztályt, amely egy ellenőrző fiók felületét implementáljaIAccount.
Tapasztalatból tudjuk, hogy a folyószámla terhére történő kifizetés esetén először is biztosítani kell, hogy a visszavont összeg kisebb legyen, mint a számla egyenlege. Ezért felülbíráljuk a IAccount.Withdraw metódust CheckingAccount egy olyan metódussal, amely ellenőrzi ezt a feltételt. A metódus a következőképpen nézhet ki:
public void Withdraw(double amount)
{
if(m_balance >= amount)
{
m_balance -= amount;
}
else
{
throw new ArgumentException(nameof(amount), "Withdrawal exceeds balance!");
}
}
Most, hogy már rendelkezünk kóddal, itt az ideje a tesztelésnek.
Egységtesztek létrehozása a Copilottal
A Visual Studio 2026 Insider buildelésétől kezdve a .NET-hez készült GitHub Copilot-tesztelés használatával automatikusan létrehozhat egységteszteket. A .NET-hez készült GitHub Copilot-tesztelés nem csak létrehozza a teszteket, hanem hibakeresést végez, és futtatja őket a Test Explorerben. További információ: A GitHub Copilot .NET-alapú tesztelésének áttekintése. Ez az ajánlott módszer a tesztek létrehozásához.
Másik lehetőségként a Copilot /tests perjel parancsot is használhatja az egységtesztek kódból való létrehozásához. Beírhatja /tests using NUnit Framework például az NUnit-tesztek létrehozásához. További információért lásd: Perjelparancsok használata a Copilot Chat alkalmazásban.
Egységtesztek létrehozása és futtatása
A Visual Studio 2026 Insider build használatával a GitHub Copilot .NET-alapú tesztelésével automatikusan létrehozhat egységteszteket.
A cikkben ismertetett eljárások többsége a manuálisan létrehozott tesztekre vonatkozik. Ha részletesebb információkat szeretne megtudni az egységtesztelésről, olvassa el a cikk további részeit, vagy ugorjon a Tesztkezelő tesztjeinek futtatása című szakaszra.
Egységtesztek létrehozása a Copilottal
A Copilot /tests perjel paranccsal egységteszteket hozhat létre a kódból. Beírhatja /tests using NUnit Framework például az NUnit-tesztek létrehozásához. További információért lásd: Perjelparancsok használata a Copilot Chat alkalmazásban.
Egységtesztelési projektek és tesztelési módszerek létrehozása (C#)
A C# esetében gyakran gyorsabb az egységtesztelési projekt és az egységteszt-csonkok létrehozása a kódból. Vagy dönthet úgy is, hogy a követelményeknek megfelelően manuálisan hozza létre az egységteszt-projektet és a teszteket. Ha egy külső keretrendszerrel rendelkező kódból szeretne egységteszteket létrehozni, az alábbi bővítmények egyikére lesz szüksége: NUnit vagy xUnit. Ha nem C#-ot használ, hagyja ki ezt a szakaszt, és nyissa meg manuálisan az egységteszt-projekt és az egységtesztek létrehozását.
Egységtesztelési projekt és egységteszt-csonkok létrehozása
A kódszerkesztő ablakában kattintson a jobb gombbal, és válassza az Egységtesztek létrehozása parancsot a jobb gombbal kattintva.
Megjegyzés:
Az Egységtesztek létrehozása menü parancs csak C#-kódhoz érhető el. A metódus .NET Core vagy .NET Standard használatával való használatához a Visual Studio 2019 vagy újabb verziójára van szükség.
Az OK gombra kattintva elfogadhatja az alapértelmezett értékeket az egységtesztek létrehozásához, vagy módosíthatja az egységteszt-projekt és az egységtesztek létrehozásához és elnevezéséhez használt értékeket. Kiválaszthatja az alapértelmezetten az egységtesztelési módszerekhez hozzáadott kódot.
Az egységteszt-csonkok egy új egységteszt-projektben jönnek létre az osztály összes metódusához.
Most ugorjon előre, hogy megtanulja , hogyan írhat teszteket , hogy az egységteszt tartalmas legyen, és minden további egységtesztet, amelyet fel szeretne venni a kód alapos teszteléséhez.
Az egységtesztelési projekt és az egységtesztek manuális létrehozása
Az egységtesztelési projekt általában egyetlen kódprojekt struktúráját tükrözi. A MyBank-példában két, névvel ellátott AccountsTestsBankDbTests egységtesztelési projektet ad hozzá a Bank megoldáshoz. A tesztprojektek neve tetszőleges, de egy szabványos elnevezési konvenció bevezetése jó ötlet.
Egységtesztelési projekt hozzáadása egy megoldáshoz:
A Megoldáskezelőben kattintson a jobb gombbal a megoldásra, és válassza azÚj>hozzáadása lehetőséget.
Írja be a teszt kifejezést a projektsablon keresőmezőbe a használni kívánt tesztelési keretrendszer egységtesztelési projektsablonjának megkereséséhez. (A cikkben szereplő példákban az MSTestet használjuk.)
A következő lapon nevezze el a projektet. A példánk projektjének teszteléséhez
Accountsnevezze el a projektetAccountsTests.Az egységtesztelési projektben adjon hozzá egy hivatkozást a tesztelt kódprojekthez a példánkban az Accounts projekthez.
A kódprojektre mutató hivatkozás létrehozása:
A Megoldáskezelő egységtesztelési projektjében kattintson a jobb gombbal a Hivatkozások vagy függőségek csomópontra, majd válassza a Projekthivatkozás hozzáadása vagy Hivatkozás hozzáadása lehetőséget, amelyik elérhető.
A Referenciakezelő párbeszédpanelen nyissa meg a Megoldás csomópontot, és válassza a Projektek lehetőséget. Válassza ki a kódprojekt nevét, és zárja be a párbeszédpanelt.
Minden egységtesztelési projekt olyan osztályokat tartalmaz, amelyek tükrözik a kódprojekt osztályainak nevét. A példánkban a projekt a AccountsTests következő osztályokat tartalmazza:
AccountInfoTestsosztály tartalmazza a projekt osztályánakAccountInfoegységtesztelési módszereitAccountsCheckingAccountTestsosztály tartalmazza aCheckingAccountosztály egységtesztelési módszereit.
Tesztek írása
A használt egységteszt-keretrendszer és a Visual Studio IntelliSense végigvezeti a kód megírásán egy kódprojekt egységtesztjeihez. A Test Explorerben való futtatáshoz a legtöbb keretrendszerhez adott attribútumokat kell hozzáadnia az egységtesztelési módszerek azonosításához. A keretrendszerek emellett – általában állítási utasítások vagy metódusattribútumok révén – módot is biztosítanak annak jelzésére, hogy a tesztmetódus sikeres vagy sikertelen volt-e. Más attribútumok azonosítják az osztály inicializálásánál, valamint az egyes vizsgálati módszerek és a lebontási metódusok előtt futó választható beállítási módszereket, amelyek az egyes vizsgálati módszerek után, illetve az osztály megsemmisítése előtt futnak.
Az AAA-minta (elrendezés, cselekvés, ellenőrzés) a tesztelés alatt álló metódus egységtesztjeinek gyakori módja.
Az egységtesztelési módszer Elrendezés szakasza inicializálja az objektumokat, és beállítja a vizsgált metódusnak átadott adatok értékét.
A Művelet szakasz meghívja a vizsgált metódust az elrendezett paraméterekkel.
Az Érvényesség szakasz ellenőrzi, hogy a vizsgált metódus művelete a várt módon működik-e. A .NET esetében az Assert osztályban lévő metódusokat gyakran használják ellenőrzésre.
A példánk módszerének teszteléséhez CheckingAccount.Withdraw két tesztet írhatunk: egyet, amely ellenőrzi a módszer szokásos viselkedését, és egyet, amely ellenőrzi, hogy az egyenlegnél nagyobb kivonás meghiúsul-e (az alábbi kód egy MSTest egységtesztet mutat, amely a .NET-ben támogatott). Az osztályban a CheckingAccountTests következő metódusokat adjuk hozzá:
[TestMethod]
public void Withdraw_ValidAmount_ChangesBalance()
{
// arrange
double currentBalance = 10.0;
double withdrawal = 1.0;
double expected = 9.0;
var account = new CheckingAccount("JohnDoe", currentBalance);
// act
account.Withdraw(withdrawal);
// assert
Assert.AreEqual(expected, account.Balance);
}
[TestMethod]
public void Withdraw_AmountMoreThanBalance_Throws()
{
// arrange
var account = new CheckingAccount("John Doe", 10.0);
// act and assert
Assert.ThrowsException<System.ArgumentException>(() => account.Withdraw(20.0));
}
A Microsoft egységtesztelési keretrendszereivel kapcsolatos további információkért tekintse meg az alábbi cikkek egyikét:
Időtúllépések beállítása egységtesztekhez
Ha az MSTest-keretrendszert használja, a TimeoutAttribute használatával időtúllépést állíthat be egy egyéni tesztelési módszerhez:
[TestMethod]
[Timeout(2000)] // Milliseconds
public void My_Test()
{ ...
}
Az időtúllépés beállítása az engedélyezett maximális értékre:
[TestMethod]
[Timeout(TestTimeout.Infinite)] // Milliseconds
public void My_Test ()
{ ...
}
Tesztek futtatása a Test Explorerben
A tesztprojekt létrehozásakor a tesztek megjelennek a Test Explorerben. Ha a Test Explorer nem látható, válassza a Visual Studio menü Tesztelés parancsát, majd a Windowst, majd a Test Explorert (vagy nyomja le a CtrlE, + billentyűkombinációt).
A tesztek futtatása, írása és újrafuttatása során a Tesztböngésző a sikertelen tesztek, a sikeres tesztek, a kihagyott tesztek és a nem futtatott tesztek csoportjaiban jeleníti meg az eredményeket. Az eszköztár beállításai alapján különböző csoportokat választhat.
A teszteket bármilyen nézetben szűrheti úgy is, hogy a keresőmezőben lévő szövegnek megfelelteti a globális szintet, vagy kiválasztja az egyik előre definiált szűrőt. A tesztek bármelyikét bármikor futtathatja. A tesztfuttatás eredményei azonnal nyilvánvalóvá válnak a kezelőablak tetején található pass/fail sávon. A teszt kiválasztásakor a vizsgálati módszer eredményének részletei jelennek meg.
Tesztek futtatása és megtekintése
A Test Explorer eszköztár segítségével felderítheti, rendszerezheti és futtathatja az önt érdeklő teszteket.
Választhatja az Összes futtatása lehetőséget az összes teszt futtatásához (vagy nyomja le a CtrlR, + billentyűkombinációt), vagy válassza a Futtatás lehetőséget a futtatandó tesztek egy részhalmazának kiválasztásához (Ctrl + R, T). Válasszon ki egy tesztet a teszt részleteinek megtekintéséhez a teszt részletei panelen. A kiválasztott teszt forráskódjának megjelenítéséhez válassza a jobb gombbal kattintva elérhető menü (Billentyűzet: F12) Teszt megnyitása parancsát.
Ha az egyes tesztek nem rendelkeznek olyan függőségekkel, amelyek megakadályozzák, hogy bármilyen sorrendben fussanak, kapcsolja be a párhuzamos tesztvégrehajtást az eszköztár Beállítások menüjében. Ez jelentősen csökkentheti az összes teszt futtatásához szükséges időt.
Tesztek futtatása minden build után
Ha minden helyi build után szeretné futtatni az egységteszteket, nyissa meg a Beállítások ikont a Test Explorer eszköztárán, és válassza a Tesztek futtatása buildelés után lehetőséget.
A tesztlista szűrése és csoportosítása
Ha sok teszttel rendelkezik, beírhatja a Test Explorer keresőmezőbe, hogy a megadott sztring alapján szűrje a listát. Az eseményszűrőt tovább korlátozhatja a szűrőlista elemeinek kiválasztásával.
| Button | Description |
|---|---|
|
Ha kategóriák szerint szeretné csoportosítani a teszteket, válassza a Csoportosítás gombot. |
További információ: Egységtesztek futtatása a Test Explorerrel.
K&A
K: Hogyan lehet hibakeresést végezni az egységteszteken?
Egy: A Tesztböngészővel hibakeresési munkamenetet indíthat el a tesztekhez. Ha a Visual Studio hibakeresőjével lépeget a kódján, zökkenőmentesen lehetővé válik az oda-vissza navigáció az egységtesztek és a tesztelendő projekt között. A hibakeresés megkezdéséhez:
A Visual Studio szerkesztőjében állítson be egy töréspontot egy vagy több hibakeresési tesztmetelyben.
Megjegyzés:
Mivel a tesztelési módszerek bármilyen sorrendben futtathatók, állítson be töréspontokat a hibakereséshez használni kívánt összes vizsgálati módszerhez.
A Test Explorerben válassza ki a tesztelési módszereket, majd a helyi menüben válassza a Kiválasztott tesztek hibakeresése lehetőséget.
További információ a hibakeresési egységtesztekről.
K: Ha TDD-t használok, hogyan hozhatok létre kódot a tesztjeimből?
Egy: A gyorsműveletek segítségével osztályokat és metódusokat hozhat létre a projektkódban. Írjon egy utasítást egy tesztmetódusba, amely meghívja a létrehozni kívánt osztályt vagy metódust, majd nyissa meg a hiba alatt megjelenő villanykörtét. Ha a hívás az új osztály konstruktorának szól, válassza a Típus létrehozása lehetőséget a menüből, és a varázslót követve szúrja be az osztályt a kódprojektbe. Ha a hívás egy metódushoz tartozik, válassza a Metódus létrehozása lehetőséget az IntelliSense menüben.
K: Létrehozhatok olyan egységteszteket, amelyek több adathalmazt vesznek fel bemenetként a teszt futtatásához?
V: Igen.
Az adatvezérelt tesztmetódusokkal egyetlen egységtesztelési módszerrel tesztelhet egy értéktartományt. Használjon egy DataRow, DynamicData vagy DataSource attribútumot a tesztmetódushoz, amely meghatározza a tesztelni kívánt változóértékeket tartalmazó adatforrást.
Az attribútumként megadott metódus az adatforrás minden sorához egyszer fut. A Test Explorer a metódus tesztelési hibáját jelenti, ha az iterációk bármelyike sikertelen. A metódus teszteredményeinek részletes panelje az egyes adatsorok pass/fail status metódusát jeleníti meg.
További információ az adatvezérelt egységtesztekről.
K: Megtekinthetim, hogy a kódom mekkora részét tesztelik az egységtesztjeim?
V: Igen. Az egységtesztek által ténylegesen tesztelt kód mennyiségét a Visual Studio Code lefedettségi eszközével határozhatja meg a Visual Studióban. A natív és felügyelt nyelvek, valamint az egységtesztelési keretrendszer által futtatható összes egységteszt-keretrendszer támogatott.
V: Igen. Az egységtesztek által ténylegesen tesztelt kód mennyiségét a Visual Studio Enterprise Visual Studio Code lefedettségi eszközével határozhatja meg. A natív és felügyelt nyelvek, valamint az egységtesztelési keretrendszer által futtatható összes egységteszt-keretrendszer támogatott.
Lefuttathatja a kódlefedettséget a kiválasztott teszteken vagy a projekt összes tesztjén. A Kódlefedettségi eredmények ablak megjeleníti a sor, függvény, osztály, névtér és modul szerint gyakorolt termékkódblokkok százalékos arányát.
Ha kódlefedettségi kódot szeretne futtatni egy megoldásban a tesztelési módszerekhez, válassza azÖsszes teszt kódlefedettségi tesztje> lehetőséget.
A lefedettségi eredmények a Kódlefedettségi eredmények ablakban jelennek meg.
További információ a kódlefedettségről.
K: Tesztelhetem a külső függőségekkel rendelkező metódusokat a kódban?
V: Igen. Ha Rendelkezik Visual Studio Enterprise-tal, a Microsoft Fakes használható az Ön által írt tesztelési módszerekkel a felügyelt kódhoz tartozó egységteszt-keretrendszerek használatával.
A Microsoft Fakes két módszert használ a külső függőségek helyettesítő osztályainak létrehozására:
A csonkok a célfüggőségi osztály szülőfelületéből származó helyettesítő osztályokat hoznak létre. A csonk metódusok helyettesíthetők a célosztály nyilvános virtuális metódusaival.
A shim-ek futásidejű eszközökkel térítik el a hívásokat egy célmetódusról egy helyettesítő shim metódusra a nem virtuális metódusok esetében.
Mindkét megközelítésben a függőségi metódus hívásaihoz generált delegációkat használhatja a tesztmódszerben kívánt viselkedés megadására.
További információ az egységtesztelési módszerek Microsoft Fakes használatával való elkülönítéséről.
K: Használhatok más egységteszt-keretrendszereket is az egységtesztek létrehozásához?
Egy: Igen, kövesse ezeket a lépéseket más keretrendszerek megkereséséhez és telepítéséhez. A Visual Studio újraindítása után nyissa meg újra a megoldást az egységtesztek létrehozásához, majd válassza ki a telepített keretrendszereket itt:
Az egységteszt-csonkok a kiválasztott keretrendszer használatával jönnek létre.
K: Hogyan exportálhatom az egységteszt eredményeit?
A: Egy .runsettings fájlt használhat a parancssorral vagy a Visual Studio IDE segítségével az egységtesztek konfigurálására és a teszteredmény-fájl beállítására. További információ: LoggerRunSettings elem.