ez a témakör a Microsoft Visual Studio 2010 (C#) konzolalkalmazás legegyszerűbb egységtesztjének lépésről lépésre történő létrehozásának folyamatát ismerteti. Ezzel a példával megtanulhatja, hogyan hozhat létre saját Egységteszteket. A példa azt is bemutatja, hogyan kell használni az Assert osztályt a teszteléshez.
Tartalom
- Feladat
- Utasítás
- 1. Hozzon létre egy alkalmazást a konzol Alkalmazássablon
- 2 használatával. A Program szövegének elkészítése.cs modul
- 2.1. A Min() függvény hozzáadása
- 2.2. Tegye nyilvánossá a Programosztályt
- 3. A vizsgált program felsorolása
- 4. Teszt létrehozása
- 4.1. Új Projekt hozzáadása a megoldáshoz
- 4.2. Az oldat szerkezete
- 4.3. Program kódja ” UnitTest1.cs ” fájl. Attribútumok és
- 4.4. Változások a szövegben UnitTest1.cs modul. A vizsgálati módszer nevének megváltoztatása
- 4.5. A MinApp projekt csatlakoztatása a TestMinApp projekthez
- 4.6. Az egység módosítása1.cs modul szövege
- 4.6.1. A MinApp névtér hozzáadása a UnitTest1-hez.cs
- 4.6.2. A TestMin () módszer szövege
- 4.7. A szöveg UnitTest1.cs modul
- 5. Futtassa a tesztet és ellenőrizze a vizsgálati eredményt
- 6. Az eredmény. Projektek közötti interakció
- kapcsolódó témák
keresés más weboldalakon:
feladat
konzolos alkalmazástípus esetén dolgozzon ki egy Egységtesztet, amely teszteli a Min() függvényt. A Min () függvényhez állítsa be a TestMin() vizsgálati módszert. Tesztelje a funkciók eredményét.
utasítás
1. Hozzon létre egy alkalmazást a
konzol Alkalmazássablon használatával futtassa az MS Visual Studio 2010 programot. Projekt létrehozásához a konzol Alkalmazássablon használatával meg kell hívnia a következő parancssort:
File -> New -> Project...
ennek eredményeként megnyílik az új Projektablak. Az ablakban válassza ki a” konzol alkalmazás ” sablont az 1.ábrán látható módon. A sablon a Visual C# lapon van kiválasztva.
1. ábra. Az” új projekt ” ablak. A “konzol alkalmazás “kiválasztása”
⇑
2. A Program szövegének elkészítése.cs modul
2.1. A Min() függvény hozzáadása
a Programosztály törzsébe hozzá kell adnia a Min() függvény szövegét. A függvény nyilvános és statikus. A Min() függvény szövege
2. ábra. Az MS Visual Studio ablak, a modul ” Program.cs”
⇑
2.2. Tegye nyilvánossá a Programosztályt
a Programosztály Min() függvényének eléréséhez ezt az osztályt nyilvánossá kell tennie. Ehhez az osztály deklarációja előtt be kell állítania a nyilvános kulcsszót.
...namespace MinApp{ public class Program { // методы класса // ... }}...
ezután a tesztelt program készen áll.
⇑
3. A vizsgált program felsorolása
jelenleg a vizsgált program programkódja a következő:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MinApp{ public class Program { public static int Min(int a, int b, int c) { int min = a; if (min > b) min = b; if (min > c) min = c; return min; } static void Main(string args) { Console.WriteLine("Demo of Unit-testing in C#."); } }}
mivel ezt a programot egy másik tesztmodulból tesztelik, akkor a Main() függvényben nem kell mást beírnia. Mivel a feladat állapotának megfelelően meg kell vizsgálnia a Min() funkció működését. Ez pedig már megtörténik a tesztmodulból. Jelenleg programunk készen áll a tesztelésre.
⇑
4. Teszt létrehozása
a tesztet egy külön projekt hozza létre a megoldásban. Az Ön által tesztelt program nem tud erről. A tesztprogram, amely tesztelni fogja, felhívja a tesztelt program funkcióit. Esetünkben a tesztprogram felhívja a funkciót
int Min(int, int, int);
⇑
4.1. Új Projekt hozzáadása a megoldáshoz
ehhez a megoldáshoz egy új projekt kerül hozzáadásra a
File->Add->New Project...
paranccsal az új projekt létrehozásának ablaka a 3. ábrán látható.
típusú projekt létrehozásának ablaka 3.ábra. A tesztprojekt típusú projekt létrehozásának ablaka
az ablakban ki kell választania a sablonok csoportot
Visual C# -> Test
a megjelenített sablonok közül a “tesztprojekt” projektsablon van kiválasztva. A” Név ” mező jelzi annak a projektnek a nevét, amely teszteli a programunkat. Be kell állítania például a TestMinApp alkalmazást. A projekt külön mappában található “E:\Test\MinApp”.
4.ábra. A ” UnitTest1.cs ” fájl. Megjelenik a Solution Explorer ablak a TestMinApp és MinApp projektekkel
⇑
4.2. A megoldás felépítése
mint a 4. ábrán látható, a Solution Explorer megjeleníti a Megoldáselemek szerkezetét, amely két projektet tartalmaz:
- a MinApp projekt. Ez egy olyan projekt, amelyet a “Console Application” sablonnal hoztak létre a tesztelendő Min() funkcióval;
- a TestMinApp projekt. Ez a projekt a MinApp projekt funkcióinak tesztelésére szolgál. A Min() függvényt tesztelő programkód hozzáadódik a TestMinApp projekt unittest1 projektfájljához.
mindkét projekt végrehajtható egymástól függetlenül.
⇑
4.3. Program kódja ” UnitTest1.cs ” fájl. Attribútumok és
a TestMinApp projektben, a UnitTest1.CS teszt fájl elsődleges érdeke. Ez a fájl olyan módszereket tartalmaz, amelyek tesztelik a MinApp projekt funkcióit. A TestMinApp projekt tetszőleges számú tesztet tartalmazó fájlt tartalmazhat (például UnitTest2.cs, UnitTest3.cs, stb.).
Program kódja “UnitTest1.cs ” fájl által generált MS Visual Studio 2010, a következő:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMethod1() { // // TODO: Add test logic here // } }}
amint a fenti kódból látható, a fájl egy unittest1 nevű osztályt tartalmaz. Az osztály magában foglalja a TestMethod1 () nevű nyilvános módszert.A Testmethod 1() metódus végrehajtása előtt az attribútum kerül elhelyezésre. Ez azt jelenti, hogy a szervezetben a módszer kell írni kódot, amely teszteli a funkciók MinApp projekt.
az osztályban tetszőleges számú módszert adhat meg, amelyek különböző modulok különböző funkcióit tesztelik. A lényeg az, hogy ezek a módszerek, ahol észre az attribútum .
⇑
4.4. Változások a szövegben UnitTest1.cs modul. A tesztelési módszer nevének módosítása
megváltoztathatja a módszerneveket, és új módszereket adhat hozzá, amelyek az attribútummal vannak megjelölve a UnitTest1-ben.cs modul. Ezt szem előtt tartva, a UnitTest1.cs, a TestMethod1 () metódust át kell nevezni TestMin () – re.
a módosítások elvégzése után a UnitTest1 rövidített szövege.cs fájl modul fog kinézni:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { ... public void TestMin() { // // TODO: Add test logic here // } }}
⇑
4.5. A MinApp projekt csatlakoztatása a TestMinApp projekthez
a Min() függvény (A MinApp projekt) eléréséhez a TestMinApp projektből be kell szerelnie azt a névteret, amelyben ez a funkció deklarálva van.
ehhez először meg kell hívnia a TestMinApp projekt helyi menüjét. Ezután a helyi menüben meg kell hívnia a “Hivatkozás hozzáadása …” parancsot (5.ábra).
5.ábra. A” Hivatkozás hozzáadása… ” parancs
ennek eredményeként megnyílik a “Hivatkozás hozzáadása” ablak, amelyben kiválasztja a MinApp projektet.
6.ábra. A “Hivatkozás hozzáadása” ablak. MinApp project connection
a végrehajtott műveletek után a MinApp projekt funkciói elérhetők lesznek a TestMinApp projektben.
7.ábra. A” referenciák ” fül a csatlakoztatott MinApp projekttel
⇑
4.6. Az egység módosítása1.cs modul szövege
4.6.1. A MinApp névtér hozzáadása a UnitTest1-hez.cs
ebben a lépésben hozzá kell adnia a MinApp névteret az UnitTest1-hez.A ‘using’ irányelvet használó cs:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ ...}
⇑
4.6.2. A TestMin() módszer szövege
a TestMin() módszer szövegében meg kell adnia a következő kódot:
...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min);}...
⇑
4.7. A szöveg UnitTest1.cs modul
az összes egység szövege1.a cs modul a következő:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMin() { // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min); } }}
⇑
5. Futtassa a tesztet és ellenőrizze a teszt eredményét
a Microsoft Visual Studio 2010-ben az Egységtesztekhez egy speciális ‘Test’ menü kerül végrehajtásra.
a teszt futtatásához ki kell választania a
Test -> Run -> Tests in Current Context
vagy
Test -> Run -> All Tests in Solution
parancsok egyikét a 8.ábrán látható módon.
8.ábra. A teszt parancs meghívása és az eredmény megtekintése
a teszt megkezdése után az eredmény megtekinthető a bal oldalon a Test Explorer ablakban. Amint az a 8. ábrán látható, a teszt nem telt el. Ez logikus,mert az Assert függvényben.AreEqual() összehasonlítjuk a 2 és 3 számokat, amelyek különböznek. Itt a 2. szám kifejezetten a 3.szám helyett kerül beírásra.
ha a 2. szám helyett a helyes választ adja meg-3. szám (minimum 3, 4, 5 között), akkor a tesztet benyújtják (9.ábra). Ebben az esetben a TestMin() módszer szövege a következő lesz:
...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(3, min);}...
az eredményablak a 9. ábrán látható.
9.ábra. Teszteredmény arra az esetre, amikor a helyes választ adja meg
most arra a következtetésre juthatunk, hogy a Min() függvény megfelelően működik ebben az esetben.
⇑
6. Az eredmény. Projektek közötti interakció
ebben a feladatban a megoldás két projektet foglal magában. Egy MinApp projekt tartalmazza a min () függvényt kell tesztelni. A második TestMinApp projekt vizsgálati módszereket tartalmaz. A Microsoft Visual Studio 2010 programban az egyes projektek különféle menüparancsokkal futnak. Tehát a MinApp projekt a szokásos módon fut a Futtatás menüből. A TestMinApp projekt pedig egy speciális ‘teszt’ menüből indul.