C #. Näide üksuse testi loomisest MS Visual Studio'is

  1. Sisu
  2. Täitmine
  3. 2. Program.cs mooduli teksti ettevalmistamine
  4. 2.2. Tehke programmi klassi avalik
  5. 3. Testitud programmi loetelu
  6. 4. Katse loomine
  7. 4.1. Uue projekti lisamine lahendusele
  8. 4.2. Lahenduste struktuur
  9. 4.3. Faili "UnitTest1.cs" tekst. Atribuudid [TestMethod] ja [TestClass]
  10. 4.4. UnitTest1 mooduli teksti muutmine. Katsemeetodi nime muutmine
  11. 4.5. MinAppi projekti ühendamine TestMinAppi projektiga
  12. 4.6. Mooduli UnitTest1.cs teksti muutmine
  13. 4.6.2. TestMin () meetodi tekst
  14. 4.7. UnitTest1.cs mooduli tekst
  15. 5. Käivitage test ja kontrollige testitulemust
  16. 6. Tulemus. Projektide vastastikune mõju

See teema kirjeldab lihtsa üksuse testi loomise protsessi samm-sammult Microsoft Visual Studio 2010 (C #) jaoks, näiteks rakenduse Console Application jaoks. Selle näite abil saate teada, kuidas luua oma üksuse testid. Näide demonstreerib ka Assert-klassi kasutamist funktsioonide toimimise testimiseks.

Sisu

Probleemi seisukord

Sellise rakenduse jaoks nagu konsoolirakendus, töötage välja üksuse test, mis katsetab funktsiooni Min (), mis määrab kolme numbri maksimaalse elemendi.

Funktsioon Min () määrake testimismeetodiks TestMin (). Kontrollige funktsiooni.

Täitmine

1. Looge rakendus rakenduse Console Applicaiton malli abil

Rakendamiseks käivitage MS Visual Studio 2010. Projekti loomiseks konsoolirakenduse mustri abil tuleb kutsuda järgmine käskude järjestus:

Fail -> Uus -> Projekt ...

Selle tulemusena avaneb aken Uus projekt. Valige aknas konsoolirakenduse mall, nagu on näidatud joonisel 1. Mall on valitud vahekaardil Visual C #.

Visual C # -> Konsoolirakendus

Visual C # -> Konsoolirakendus

Joonis fig. 1. Aken "Uus projekt". Konsooli rakenduse tüübi rakenduse valimine

2. Program.cs mooduli teksti ettevalmistamine

2.1. Lisa Min () funktsioon mooduli tekstile

Lisage programmi klassi kehasse Min () funktsiooni tekst.

Funktsioon on avalikustatud (staatiline) ja avalik. Min () funktsiooni tekst

avalik staatiline int Min (int a, int b, int c) {int min = a; kui (min> b) min = b; kui (min> c) min = c; tagastamine min; }

avalik staatiline int Min (int a, int b, int c) {int min = a;  kui (min> b) min = b;  kui (min> c) min = c;  tagastamine min;  }

Joonis fig. 2. Akna MS Visual Studio 2010 vaade, moodul “Program.cs”

2.2. Tehke programmi klassi avalik

Programmi klassi Min () funktsioonile pääsemiseks peate selle klassi avalikkusele kättesaadavaks tegema. Selleks peate enne klassi kuulutamist määrama avaliku märksõna.

... nimeruumi MinApp {avaliku klassi programm {// klassi meetodid // ...}} ...

Pärast seda on testiprogramm valmis.

3. Testitud programmi loetelu

Praegu on testitava programmi loetelu järgmine:

süsteemi kasutamine; System.Collections.Generic; kasutades System.Linq; System.Text; nimeruumi MinApp {avaliku klassi programm {avalik static int Min (int a, int b, int c) {int min = a; kui (min> b) min = b; kui (min> c) min = c; tagastamine min; } staatiline tühimik Main (string [] args) {Console.WriteLine ("Ühiku testimise demo C #."); }}}

Kuna seda programmi testitakse mõnest teisest testimoodulist, pole pea () funktsioonis midagi muud vaja sisestada. Kuna vastavalt probleemi olukorrale peate kontrollima Min () funktsiooni toimimist. Ja seda tehakse testimismoodulist. Praegu on meie programm testimiseks valmis.

4. Katse loomine

Test on loodud eraldi projekti (Project) abil (Solution). Testitav programm ei tea seda. Programm, mis testib (testimise programmi), kutsub testitava programmi funktsioone. Meie puhul nimetab testprogramm seda funktsiooni

int Min (int, int, int);

4.1. Uue projekti lisamine lahendusele

Selle lahenduse (lahendus) jaoks tuleb käsuga lisada uus projekt

Fail-> Lisa-> Uus projekt ...

Uue projekti loomise aken on näidatud joonisel 3.

Joonis fig. 3. Testprojekti tüübi projekti loomise aken

Aknas valitakse grupp Visual C # malle -> Test. Kuvatud mallidest valitakse projekti Test Projekti mall. Väljal "Nimi" on näidatud selle programmi nimi, mis testib meie programmi. Peate seadistama näiteks TestMinApp. Projekt asub eraldi kaustas "E: Test MinApp".

Projekt asub eraldi kaustas E: Test MinApp

Joonis fig. 4. Mooduli UnitTest1.cs tekst. Lahendus Exploreri kasulikkuse aken, kus kuvatakse TestMinApp ja MinApp projekte

4.2. Lahenduste struktuur

Nagu on näha jooniselt 4, kuvab Solution Explorer utiliit lahenduse üksuste struktuuri, mis sisaldab kahte projekti:

  • projekt MinApp. See on projekt, mis on loodud konsoolirakenduse malliga Min () funktsiooniga, mida soovite protestida;
  • TestMinApp projekt. See projekt on mõeldud MinApp projekti omaduste testimiseks. Programmikood, mis testib Min () funktsiooni, sisestatakse TestMinApp projekti UnitTest1 projektifaili.

Mõlemat projekti võib teostada üksteisest sõltumatult.

4.3. Faili "UnitTest1.cs" tekst. Atribuudid [TestMethod] ja [TestClass]

Projekti TestMinApp puhul on testfail UnitTest1.cs esmatähtis. See fail sisaldab meetodeid, mis testivad MinAppi projekti funktsioone. TestMinApp projekt võib sisaldada mis tahes arvu faile, mis sisaldavad teste (näiteks UnitTest2.cs, UnitTest3.cs jne).

MS Visual Studio 2010 poolt genereeritud faili UnitTest1.cs loend on järgmine:

süsteemi kasutamine; System.Text; System.Collections.Generic; kasutades System.Linq; kasutades Microsoft.VisualStudio.TestTools.UnitTesting; nimeala TestMinApp {/// <summary> /// UnitTest1 /// </ summary> [TestClass] avalik klass UnitTest1 {public UnitTest1 () {// // TODO: ehitaja loogika lisamine siin /} privaatne testContext testContextInstance; /// <summary> /// Võimaldab või seab testi konteksti. /// </ summary> avalik TestContext TestContext {get {return testContextInstance; } set {testContextInstance = väärtus; }} # region Täiendavad testi atribuudid // saate teste kasutada // // Kasuta ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Kasuta ClassCleanupi koodi käivitamiseks pärast seda, kui kõik klassis tehtud testid on käivitatud // [ClassCleanup ()] // public static void MyClassCleanup () {} // // Kasuta TestInitialize koodi käivitamiseks enne iga testi käivitamist // [TestInitialize ()] // public void MyTestInitialize () {} // // Kasuta TestCleanup ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: lisage siia testi loogika //}}}

Nagu ülaltoodud koodist võib näha, sisaldab fail klassi UnitTest1. Klassil on avalik meetod TestMethod1 (). Enne TestMethod1 () meetodi rakendamist paigutatakse atribuut [TestMethod]. See tähendab, et peate sisestama koodi, mis testib meetodi kehas MinAppi projekti funktsioone.

Klassis saab sisestada suvalise arvu meetodeid, mis testivad erinevaid funktsioone erinevatest moodulitest. Peaasi on see, et need meetodid on tähistatud atribuudiga [TestMethod].

4.4. UnitTest1 mooduli teksti muutmine. Katsemeetodi nime muutmine

Saate muuta meetodite nimesid ja lisada uusi meetodeid, mis on tähistatud [TestMethod] atribuudiga UnitTest1.cs moodulis. Arvestades seda, peate UnitTest1.cs mooduli tekstis ümber määrama TestMethod1 () meetodi TestMiniks ().

Pärast muudatuste tegemist on faili UnitTest1.cs mooduli lühendatud tekst:

süsteemi kasutamine; System.Text; System.Collections.Generic; kasutades System.Linq; kasutades Microsoft.VisualStudio.TestTools.UnitTesting; nimeruumi TestMinApp {/// <summary> /// UnitTest1 /// </ summary> [TestClass] avalik klass UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Lisa test loogika siin //}}}

4.5. MinAppi projekti ühendamine TestMinAppi projektiga

Et saada juurdepääsu TestMinApp projekti Min () funktsioonile (MinApp projekt), peate ühendama nimeruumi, kus see funktsioon asub.

Selleks peate kõigepealt helistama TestMinApp projekti kontekstimenüüle. Seejärel tuleb kontekstimenüüs helistada käsule “Lisa viide ...” (joonis 5).

” (joonis 5)

Joonis fig. 5. Meeskond „Lisa referensioon ...”

Selle tulemusena avaneb aken Add Reference, kus peate valima MinApp projekti.

Joonis fig. 6. Aken "Lisa viide". Projekti MinApp ühendamine

Pärast lõpetatud tegevusi on MinApp projekti funktsioonid TestMinAppi projektis kasutatavad.

Pärast lõpetatud tegevusi on MinApp projekti funktsioonid TestMinAppi projektis kasutatavad

Joonis fig. 7. Viited vahekaardiga ühendatud MinApp projektiga

4.6. Mooduli UnitTest1.cs teksti muutmine
4.6.1. MinApp nimeruumi lisamine moodulile UnitTest1.cs

Selles etapis peate UnitTest1.cs moodulis lisama MinApp nimeruumi kasutades kasutavat direktiivi:

süsteemi kasutamine; System.Text; System.Collections.Generic; kasutades System.Linq; kasutades Microsoft.VisualStudio.TestTools.UnitTesting; MinAppi kasutamine; nimeruumi TestMinApp {...}

4.6.2. TestMin () meetodi tekst

TestMin () meetodi tekstis sisestage järgmine kood:

... [TestMethod] public void TestMin () {// // TODO: siia lisage testlogika // int min; min = programm .Min (3, 4, 5); Kinnita .Võimalik (2, min); } ...

4.7. UnitTest1.cs mooduli tekst

Kogu UnitTest1.cs mooduli tekst on järgmine:

süsteemi kasutamine; System.Text; System.Collections.Generic; kasutades System.Linq; kasutades Microsoft.VisualStudio.TestTools.UnitTesting; MinAppi kasutamine; nimeala TestMinApp {/// <summary> /// UnitTest1 /// </ summary> [TestClass] avalik klass UnitTest1 {public UnitTest1 () {// // TODO: ehitaja loogika lisamine siin /} privaatne testContext testContextInstance; /// <summary> /// Võimaldab või seab testi konteksti. /// </ summary> avalik TestContext TestContext {get {return testContextInstance; } set {testContextInstance = väärtus; }} # region Täiendavad testi atribuudid // saate teste kasutada // // Kasuta ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Kasuta ClassCleanupi koodi käivitamiseks pärast seda, kui kõik klassis tehtud testid on käivitatud // [ClassCleanup ()] // public static void MyClassCleanup () {} // // Kasuta TestInitialize koodi käivitamiseks enne iga testi käivitamist // [TestInitialize ()] // public void MyTestInitialize () {} // // Kasuta TestCleanup ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: lisage siia testi loogika // int min; min = programm .Min (3, 4, 5); Kinnita .Võimalik (2, min); }}}

5. Käivitage test ja kontrollige testitulemust

Microsoft Visual Studio 2010-s rakendatakse üksuse testidega töötamiseks spetsiaalset menüüd, mida nimetatakse Testiks.

Rakendustesti käivitamiseks valige üks käskudest.

Test -> Run -> Testid praeguses kontekstis

või

Test -> Run -> Kõik testid testis

nagu on näidatud joonisel 8.

Joonis fig. 8. Helistage käivituskatsele ja vaadake tulemust.

Pärast testi käivitamist saab tulemuse akna allosas vaadata. Nagu jooniselt näha, ei ole katse läbi viidud. See on loogiline, sest funktsioonis Assert.AreEqual () võrreldakse numbreid 2 ja 3, mis on erinevad. Siin sisestatakse number 2 spetsiaalselt 3 asemel.

Kui numbri 2 asemel sisestate õige vastuse - number 3 (minimaalselt vahemikus 3, 4, 5), siis tehakse test (joonis 9). Sellisel juhul on TestMin () meetodi tekst järgmine:

... [TestMethod] public void TestMin () {// // TODO: siia lisage testlogika // int min; min = programm .Min (3, 4, 5); Kinnita .Võimalik (3, min); } ...

Tulemuste aken on näidatud joonisel 9.

Joonis fig. 9. Juhul, kui sisestate õige vastuse, testige tulemust

Nüüd võime järeldada, et antud juhul toimib Min () funktsioon korralikult.

6. Tulemus. Projektide vastastikune mõju

Käesolevas töös moodustatakse lahenduses kaks projekti. Üks MinApp projekt sisaldab Min () funktsiooni, mida soovite testida. Teine projekt TestMinApp sisaldab testimismeetodeid.

Microsoft Visual Studio 2010 puhul käivitatakse iga projekt erinevate menüükäskude abil. Niisiis käivitatakse MinApp projekt tavalisel viisil menüüst Run. Projekti TestMinApp käivitatakse spetsiaalsest testimenüüst.

Seotud teemad