.NET-osztálytár tesztelése a Visual Studióval
Fontos
A Microsoft bejelentette a Mac Visual Studio kivonását. A Visual Studio for Mac 2024. augusztus 31-től már nem támogatott. Alternatív lehetőségek:
- Visual Studio Code a C# Dev Kittel és a kapcsolódó bővítményekkel, például a .NET MAUI-val és a Unityvel.
- A Windowson futó Visual Studio egy Mac rendszerű virtuális gépen fut.
- Windows rendszeren futó Visual Studio egy felhőbeli virtuális gépen.
További információt a Mac Visual Studio kivonási bejelentésében talál.
Ez az oktatóanyag bemutatja, hogyan automatizálhatja az egységtesztelést egy tesztprojekt megoldáshoz való hozzáadásával.
Előfeltételek
- Ez az oktatóanyag a .NET-osztálytár létrehozása a Mac Visual Studio használatával létrehozott megoldással működik.
Egységtesztelési projekt létrehozása
Az egységtesztek automatizált szoftvertesztelést biztosítanak a fejlesztés és a közzététel során. Az MSTest a három választható tesztelési keretrendszer egyike. A többi xUnit és nUnit.
Indítsa el a Mac Visual Studiót.
Nyissa meg a
ClassLibraryProjects
.NET-osztálytár létrehozása a Mac Visual Studio használatával létrehozott megoldást.A Megoldáspanelen kattintson a megoldásra, és válassza az
ClassLibraryProjects
Új projekt hozzáadása>lehetőséget.Az Új projekt párbeszédpanelen válassza a Webes és konzolcsomópont Tesztek elemét. Válassza ki az MSTest-projektet, majd a Tovább elemet.
Válassza a .NET 5.0-t cél-keretrendszerként, majd válassza a Tovább lehetőséget.
Nevezze el az új projektet "StringLibraryTest" néven, és válassza a Létrehozás lehetőséget.
A Visual Studio létrehoz egy osztályfájlt a következő kóddal:
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace StringLibraryTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { } } }
Az egységtesztsablon által létrehozott forráskód a következőket teszi:
- Importálja a Microsoft.VisualStudio.TestTools.UnitTesting névteret, amely tartalmazza az egységteszteléshez használt típusokat.
- Az attribútumot az TestClassAttribute osztályra
UnitTest1
alkalmazza. - Az attribútumot a TestMethodAttribute következőre
TestMethod1
alkalmazza: .
A [TestClass] címkével ellátott tesztosztályban a [TestMethod] címkével ellátott metódusok automatikusan futnak az egységteszt futtatásakor.
Projekthivatkozás hozzáadása
Ahhoz, hogy a tesztprojekt működjön az StringLibrary
osztálysal, adjon hozzá egy hivatkozást a StringLibrary
projekthez.
A Megoldáspanelen kattintson a Függőségek elemre a StringLibraryTest alatt. Válassza a Helyi menü Hivatkozás hozzáadása elemét.
A Hivatkozások párbeszédpanelen válassza ki a StringLibrary projektet. Kattintson az OK gombra.
Egységtesztelési módszerek hozzáadása és futtatása
Amikor a Visual Studio egy egységtesztet futtat, végrehajtja azokat a metódusokat, amelyek az TestMethodAttribute attribútummal TestClassAttribute megjelölt osztályban vannak megjelölve. A tesztmetódus akkor fejeződik be, amikor az első hiba található, vagy ha a metódusban található összes teszt sikeres volt.
A leggyakoribb tesztek az osztály tagjait Assert hívják meg. Számos érvényesítési módszer tartalmaz legalább két paramétert, amelyek közül az egyik a várt vizsgálati eredmény, a másik pedig a tényleges teszteredmény. Assert
Az osztály leggyakrabban nevezett módszereinek némelyike az alábbi táblázatban látható:
Helyességi módszerek | Függvény |
---|---|
Assert.AreEqual |
Ellenőrzi, hogy két érték vagy objektum egyenlő-e. Az állítás meghiúsul, ha az értékek vagy objektumok nem egyenlők. |
Assert.AreSame |
Ellenőrzi, hogy két objektumváltozó ugyanarra az objektumra hivatkozik-e. Az állítás meghiúsul, ha a változók különböző objektumokra hivatkoznak. |
Assert.IsFalse |
Ellenőrzi, hogy egy feltétel van-e false . Az állítás meghiúsul, ha a feltétel .true |
Assert.IsNotNull |
Ellenőrzi, hogy egy objektum nem null . Az állítás meghiúsul, ha az objektum .null |
A metódust egy Assert.ThrowsException tesztmetódusban is használhatja annak jelzésére, hogy milyen típusú kivétel várható. A teszt meghiúsul, ha a megadott kivétel nincs kiadva.
A metódus tesztelése StringLibrary.StartsWithUpper
során több olyan sztringet szeretne megadni, amelyek nagybetűvel kezdődnek. Ezekben az esetekben a metódus várhatóan visszatér true
, így meghívhatja a metódust Assert.IsTrue . Ehhez hasonlóan több sztringet is meg szeretne adni, amelyek nem nagybetűvel kezdődnek. Ezekben az esetekben a metódus várhatóan visszatér false
, így meghívhatja a metódust Assert.IsFalse .
Mivel a kódtár metódusa sztringeket kezel, azt is meg kell győződnie arról, hogy sikeresen kezeli az üres sztringet (), egy érvényes sztringet, amelynek nincs karaktere, és amelynek Length értéke 0, valamint egy nem inicializált sztringetnull
.String.Empty
Közvetlenül statikus metódusként hívhat, StartsWithUpper
és egyetlen String argumentumot adhat át. Vagy meghívhat StartsWithUpper
bővítménymetódusként egy hozzárendelt string
változón null
.
Három metódust fog definiálni, amelyek mindegyike metódust Assert hív meg egy sztringtömb minden eleméhez. Egy metódus túlterhelését fogja meghívni, amely lehetővé teszi egy hibaüzenet megadását, amely teszthiba esetén jelenik meg. Az üzenet azonosítja a hibát okozó sztringet.
A tesztelési módszerek létrehozása:
Nyissa meg a UnitTest1.cs fájlt, és cserélje le a kódot a következő kódra:
using Microsoft.VisualStudio.TestTools.UnitTesting; using UtilityLibraries; namespace StringLibraryTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestStartsWithUpper() { // Tests that we expect to return true. string[] words = { "Alphabet", "Zebra", "ABC", "Αθήνα", "Москва" }; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsTrue(result, string.Format("Expected for '{0}': true; Actual: {1}", word, result)); } } [TestMethod] public void TestDoesNotStartWithUpper() { // Tests that we expect to return false. string[] words = { "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " }; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsFalse(result, string.Format("Expected for '{0}': false; Actual: {1}", word, result)); } } [TestMethod] public void DirectCallWithNullOrEmpty() { // Tests that we expect to return false. string?[] words = { string.Empty, null }; foreach (var word in words) { bool result = StringLibrary.StartsWithUpper(word); Assert.IsFalse(result, string.Format("Expected for '{0}': false; Actual: {1}", word == null ? "<null>" : word, result)); } } } }
A módszer nagybetűs karaktereinek
TestStartsWithUpper
vizsgálata magában foglalja a görög alfa betűt (U+0391) és az EM cirill betűt (U+041C). A módszer kisbetűs karaktereinekTestDoesNotStartWithUpper
vizsgálata magában foglalja a görög kis alfa betűt (U+03B1) és a cirill kis Ghe betűt (U+0433).A menüsávon válassza a Fájl>mentése másként lehetőséget. A párbeszédpanelen győződjön meg arról, hogy a kódolás Unicode (UTF-8) értékre van állítva.
Amikor a rendszer megkérdezi, hogy szeretné-e lecserélni a meglévő fájlt, válassza a Csere lehetőséget.
Ha nem tudja UTF8 kódolású fájlként menteni a forráskódot, a Visual Studio ASCII-fájlként mentheti. Ha ez történik, a futtatókörnyezet nem tudja pontosan dekódolni az ASCII-tartományon kívüli UTF8 karaktereket, és a teszteredmények nem lesznek helyesek.
Nyissa meg az Egységtesztek panelt a képernyő jobb oldalán. Válassza a Tesztek megtekintése>lehetőséget a menüből.
Kattintson a Dock ikonra a panel megnyitásához.
Kattintson az Összes futtatása gombra.
Minden teszt sikeres.
Teszthibák kezelése
Ha tesztalapú fejlesztést (TDD) végez, először teszteket kell írnia, és az első futtatáskor sikertelenek lesznek. Ezután kódot ad hozzá az alkalmazáshoz, amely sikeressé teszi a tesztet. Ebben az oktatóanyagban az érvényesített alkalmazáskód megírása után hozta létre a tesztet, így nem látta a teszt sikertelenségét. Annak ellenőrzéséhez, hogy egy teszt sikertelen lesz-e, amikor azt várja, adjon hozzá egy érvénytelen értéket a teszt bemenetéhez.
Módosítsa a
words
tömböt a metódusban úgyTestDoesNotStartWithUpper
, hogy tartalmazza a "Error" sztringet. Nem kell mentenie a fájlt, mert a Visual Studio automatikusan menti a megnyitott fájlokat, amikor egy megoldás tesztek futtatására készült.string[] words = { "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " };
Futtassa újra a teszteket.
Ezúttal a Test Explorer ablak azt jelzi, hogy két teszt sikeres volt, és egy sikertelen volt.
ctrl billentyűt lenyomva tartva kattintson a sikertelen tesztre,
TestDoesNotStartWithUpper
és válassza az Eredménypanel megjelenítése parancsot a helyi menüben.Az Eredmények pad a következő állítás által létrehozott üzenetet jeleníti meg: "Assert.IsFalse failed. IsFalse failed. "Hiba" várható: hamis; tényleges: Igaz". A hiba miatt a "Hiba" tesztelése után a tömbben nem található sztring.
Távolítsa el az 1. lépésben hozzáadott "Hiba" sztringet. Futtassa újra a tesztet, és a tesztek sikeresek.
A kódtár kiadási verziójának tesztelése
Most, hogy az összes teszt sikeresen lefutott a kódtár hibakeresési buildjének futtatásakor, futtassa a teszteket még egyszer a kódtár kiadási buildjéhez. Számos tényező, köztük a fordítóoptimalizálások, néha eltérő viselkedést eredményezhetnek a Hibakeresés és a Kiadás buildek között.
A Kiadás build tesztelése:
A Visual Studio eszköztárán módosítsa a buildkonfigurációt hibakeresésről kiadásra.
A Megoldás panelen kattintson a StringLibrary projektre, és válassza a Helyi menü Build elemét a kódtár újrafordításához.
Futtassa újra az egységteszteket.
A tesztek sikeresek.
Hibakeresési tesztek
Ha a Visual Studio for Mac-t használja ide-ként, az oktatóanyagban bemutatott eljárást használhatja: .NET-konzolalkalmazás hibakeresése a Mac Visual Studio használatával kód hibakereséséhez az egységtesztelési projekt használatával. A ShowCase alkalmazásprojekt indítása helyett kattintson a StringLibraryTests projektre, és válassza a Projekt hibakeresésének indítása parancsot a helyi menüből.
A Visual Studio a hibakereső csatolásával elindítja a tesztprojektet. A végrehajtás leáll a tesztprojekthez vagy a mögöttes kódtár kódjához hozzáadott bármely töréspontnál.
További források
További lépések
Ebben az oktatóanyagban egy osztálytárat tesztelt. A kódtárat elérhetővé teheti mások számára, ha csomagként közzéteszi azt a NuGetben . Ha szeretné megtudni, hogyan, kövesse a NuGet-oktatóanyagot:
Ha NuGet-csomagként tesz közzé egy tárat, mások is telepíthetik és használhatják. Ha szeretné megtudni, hogyan, kövesse a NuGet-oktatóanyagot:
A kódtárakat nem kell csomagként terjeszteni. Az azt használó konzolalkalmazással együtt is csomagolható. A konzolalkalmazások közzétételének módjáról a sorozat korábbi oktatóanyagában olvashat:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: