C #. Primer ustvarjanja testa enote v MS Visual Studio
- Vsebina
- Izvajanje
- 2. Priprava besedila modula Program.cs
- 2.2. Objavi razred programa
- 3. Seznam preizkušenega programa
- 4. Ustvarjanje testa
- 4.1. Dodajanje novega projekta v rešitev
- 4.2. Struktura raztopine
- 4.3. Besedilo datoteke "UnitTest1.cs". Atributi [TestMethod] in [TestClass]
- 4.4. Spreminjanje besedila modula UnitTest1. Spreminjanje imena preskusne metode
- 4.5. Povezovanje projekta MinApp s projektom TestMinApp
- 4.6. Spreminjanje besedila modula UnitTest1.cs
- 4.6.2. Besedilo metode TestMin ()
- 4.7. Besedilo modula UnitTest1.cs
- 5. Zaženite test in preverite rezultat testa
- 6. Rezultat. Interakcija med projekti
V tej temi je opisan postopen postopek ustvarjanja preprostega testa enote v Microsoft Visual Studio 2010 (C #) za aplikacijo, kot je Console Application. Z uporabo tega primera se lahko naučite, kako ustvarite lastne testne enote. Primer prikazuje tudi uporabo razreda Assert za preskušanje delovanja funkcij.
Vsebina
Stanje problema
Za aplikacijo, kot je Console Application, razvite test enote, ki preizkusi delovanje funkcije Min (), ki določa največji element treh številk.
Za funkcijo Min () nastavite preskusno metodo na TestMin (). Preverite funkcijo.
Izvajanje
1. Ustvarite aplikacijo s predlogo aplikacije Console Applicaiton
Za izvedbo poženite MS Visual Studio 2010. Če želite izdelati projekt z vzorcem aplikacije konzole, morate poklicati naslednje zaporedje ukazov:
Datoteka -> Novo -> Projekt ...
Zato se odpre okno Nov projekt. V oknu izberite predlogo konzolne aplikacije, kot je prikazano na sliki 1. Predloga je izbrana na kartici Visual C #.
Visual C # -> aplikacija konzole
Sl. 1. Okno "Nov projekt". Izbira aplikacije tipa konzolne aplikacije
2. Priprava besedila modula Program.cs
2.1. Dodajanje funkcije Min () besedilu modula
V telesu razreda programa dodajte besedilo funkcije Min ().
Funkcija je deklarirana kot javna (statična) in javna. Funkcijsko besedilo min ()
javna statična int Min (int a, int b, int c) {int min = a; če (min> b) min = b; če (min> c) min = c; vrnitev min; }
Sl. 2. Pogled na okno MS Visual Studio 2010, modul »Program.cs«
2.2. Objavi razred programa
Da bi imeli dostop do funkcije Min () razreda programa, morate ta razred dati na voljo javnosti. Če želite to narediti, morate pred razglasitvijo razreda določiti javno ključno besedo.
... imenski prostor MinApp {javni razred Program {// metode razredov // ...}} ...
Po tem je testni program pripravljen.
3. Seznam preizkušenega programa
Trenutno je seznam testiranih programov naslednji:
z uporabo sistema; z uporabo System.Collections.Generic; z uporabo System.Linq; z uporabo System.Text; imenski prostor MinApp {javni razred Program {javna statična int Min (int a, int b, int c) {int min = a; če (min> b) min = b; če (min> c) min = c; vrnitev min; } static void Main (string [] args) {Console.WriteLine ("Predstavitev testiranja enot v C #."); }}}
Ker bo ta program preizkušen iz drugega testnega modula, ni potrebno vnašati ničesar v funkcijo Main (). Ker morate v skladu s pogojem problema preskusiti delovanje funkcije Min (). In to bo izvedeno iz testnega modula. Trenutno je naš program pripravljen na testiranje.
4. Ustvarjanje testa
Test se ustvari z ločenim projektom (Project) v rešitvi (Solution). Program, ki se preizkuša, o tem ne ve. Program, ki bo testiral (testni program), bo poklical funkcije programa, ki se testira. V našem primeru bo testni program klical funkcijo
int Min (int, int, int);
4.1. Dodajanje novega projekta v rešitev
Za to rešitev (Solution) morate z ukazom dodati nov projekt
Datoteka-> Dodaj-> Nov projekt ...
Okno za ustvarjanje novega projekta je prikazano na sliki 3.
Sl. 3. Okno za izdelavo projekta tipa Test Project
V oknu je izbrana skupina predlogov Visual C # -> Test. Iz prikazanih predlog se izbere predlog projekta »Test Project«. V polju "Ime" je prikazano ime projekta, ki bo testiral naš program. Nastaviti morate na primer TestMinApp. Projekt se nahaja v ločeni mapi "E: Test MinApp".
Sl. 4. Besedilo modula UnitTest1.cs. Okno s pripomočkom Solution Explorer s projekti TestMinApp in MinApp
4.2. Struktura raztopine
Kot je razvidno iz slike 4, orodje Raziskovalec rešitev prikaže strukturo postavk rešitve, ki vsebuje dva projekta:
- projekt MinApp. To je projekt, izdelan s predlogo aplikacije konzole s funkcijo Min (), ki jo želite protestirati;
- Projekt TestMinApp. Ta projekt je zasnovan za testiranje značilnosti projekta MinApp. Programska koda, ki preizkuša funkcijo Min (), bo vnesena v projektno datoteko UnitTest1 projekta TestMinApp.
Oba projekta se lahko izvajata neodvisno drug od drugega.
4.3. Besedilo datoteke "UnitTest1.cs". Atributi [TestMethod] in [TestClass]
V projektu TestMinApp je preskusna datoteka UnitTest1.cs primarno pomembna. Ta datoteka vsebuje metode, ki bodo testirale funkcije projekta MinApp. Projekt TestMinApp lahko vsebuje poljubno število datotek, ki vsebujejo teste (na primer, UnitTest2.cs, UnitTest3.cs, itd.).
Seznam datoteke UnitTest1.cs, ki jo ustvari MS Visual Studio 2010, je naslednja:
z uporabo sistema; z uporabo System.Text; z uporabo System.Collections.Generic; z uporabo System.Linq; z uporabo Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Povzetek za UnitTest1 /// </ summary> [TestClass] javni razred UnitTest1 {public UnitTest1 () {// // TODO: Dodaj logiko konstruktorja tukaj //} zasebni TestContext testContextInstance; /// <summary> /// Pridobi ali nastavi kontekst preskusa. /// </ summary> public TestContext TestContext {get {vrne testContextInstance; } set {testContextInstance = vrednost; }} #region Dodatni testni atributi // lahko uporabite teste // // Uporaba ClassInitialize // [ClassInitialize ()] // javni static void za zagon kode pred zagonom vsakega preskusa // [TestInitialize ()] // javna void MyTestInitialize () {} // // Uporabite TestCleanup ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: tukaj dodajte testno logiko //}}}
Kot je razvidno iz zgornje kode, datoteka vsebuje razred z imenom UnitTest1. Razred ima javno metodo, imenovano TestMethod1 (). Pred izvajanjem metode TestMethod1 () je postavljen atribut [TestMethod]. To pomeni, da morate vnesti kodo, ki bo testirala funkcije projekta MinApp v telesu metode.
V razredu lahko vnesete poljubno število metod, ki bodo testirale različne funkcije iz različnih modulov. Glavna stvar je, da so te metode označene z atributom [TestMethod].
4.4. Spreminjanje besedila modula UnitTest1. Spreminjanje imena preskusne metode
Imena metod lahko spremenite in dodate nove metode, ki so označene z atributom [TestMethod] v modulu UnitTest1.cs. Glede na to morate v besedilu modula UnitTest1.cs preimenovati metodo TestMethod1 () v TestMin ().
Po opravljenih spremembah bo skrajšano besedilo modula datoteke UnitTest1.cs:
z uporabo sistema; z uporabo System.Text; z uporabo System.Collections.Generic; z uporabo System.Linq; z uporabo Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Povzetek za UnitTest1 /// </ summary> [TestClass] javni razred UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Dodaj test logika tukaj //}}}
4.5. Povezovanje projekta MinApp s projektom TestMinApp
Če želite imeti dostop do funkcije Min () (projekt MinApp) iz projekta TestMinApp, morate povezati imenski prostor, v katerem je ta funkcija.
Za to morate najprej poklicati kontekstni meni za projekt TestMinApp. Nato v kontekstnem meniju pokličete ukaz »Dodaj referenco ...« (Slika 5).
Sl. 5. Ekipa »Dodaj sklicevanje ...«
Zato se odpre okno Dodajanje referenc, v katerem morate izbrati projekt MinApp.
Sl. 6. Okno »Dodaj referenco«. Povezovanje projekta MinApp
Po zaključenih dejanjih bodo funkcije projekta MinApp na voljo za uporabo v projektu TestMinApp.
Sl. 7. Kartica Reference s povezanim MinApp projektom
4.6. Spreminjanje besedila modula UnitTest1.cs
4.6.1. Dodajanje imenskega prostora MinApp v modul UnitTest1.cs
V tem koraku morate v modulu UnitTest1.cs dodati imenski prostor MinApp, ki uporablja direktivo using:
z uporabo sistema; z uporabo System.Text; z uporabo System.Collections.Generic; z uporabo System.Linq; z uporabo Microsoft.VisualStudio.TestTools.UnitTesting; z uporabo MinApp; namespace TestMinApp {...}
4.6.2. Besedilo metode TestMin ()
V besedilu metode TestMin () vnesite naslednjo kodo:
... [TestMethod] public void TestMin () {// // TODO: Tukaj dodajte testno logiko // int min; min = Program. Min (3, 4, 5); Trdite .AreEqual (2, min); } ...
4.7. Besedilo modula UnitTest1.cs
Besedilo celotnega modula UnitTest1.cs je naslednje:
z uporabo sistema; z uporabo System.Text; z uporabo System.Collections.Generic; z uporabo System.Linq; z uporabo Microsoft.VisualStudio.TestTools.UnitTesting; z uporabo MinApp; namespace TestMinApp {/// <summary> /// Povzetek za UnitTest1 /// </ summary> [TestClass] javni razred UnitTest1 {public UnitTest1 () {// // TODO: Dodaj logiko konstruktorja tukaj //} zasebni TestContext testContextInstance; /// <summary> /// Pridobi ali nastavi kontekst preskusa. /// </ summary> public TestContext TestContext {get {vrne testContextInstance; } set {testContextInstance = vrednost; }} #region Dodatni testni atributi // lahko uporabite teste // // Uporaba ClassInitialize // [ClassInitialize ()] // javni static void za zagon kode pred zagonom vsakega preskusa // [TestInitialize ()] // javna void MyTestInitialize () {} // // Uporabite TestCleanup ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: Tukaj dodajte testno logiko // int min; min = Program. Min (3, 4, 5); Trdite .AreEqual (2, min); }}}
5. Zaženite test in preverite rezultat testa
V programu Microsoft Visual Studio 2010 se za delo s testi enot izvaja poseben meni ukazov, imenovan Test.
Če želite izvesti test izvajanja, izberite enega od ukazov.
Test -> Zaženi -> Preskusi v trenutnem kontekstuali
Test -> Zaženi -> Vsi preskusi v rešitvi
kot je prikazano na sliki 8.
Sl. 8. Pokličite ukaz za zagon in si oglejte rezultat.
Po zagonu testa se lahko rezultat prikaže na dnu okna Testni rezultati. Kot je razvidno iz slike, test ni bil opravljen. To je logično, saj v funkciji Assert.AreEqual () primerjamo številke 2 in 3, ki sta različni. Tu je namesto števila 3 posebej predstavljeno število 2.
Če namesto številke 2 vnesete pravilen odgovor - številko 3 (najmanj med 3, 4, 5), bo test opravljen (slika 9). V tem primeru bo besedilo metode TestMin () naslednje:
... [TestMethod] public void TestMin () {// // TODO: Tukaj dodajte testno logiko // int min; min = Program. Min (3, 4, 5); Trditev .AreEqual (3, min); } ...
Okno z rezultati je prikazano na sliki 9.
Sl. 9. Rezultat testa za primer, če vnesete pravilen odgovor
Sedaj lahko zaključimo, da funkcija Min () za ta primer deluje pravilno.
6. Rezultat. Interakcija med projekti
V tem prispevku sta v rešitvi oblikovana dva projekta. En projekt MinApp vsebuje funkcijo Min (), ki jo želite preskusiti. Drugi projekt, TestMinApp, vsebuje testne metode.
V Microsoft Visual Studio 2010 se vsak projekt zažene z uporabo različnih menijskih ukazov. Projekt MinApp se tako sproži na standardni način iz menija Run. Projekt TestMinApp se zažene s posebnega menija Test.