C #. Primjer stvaranja testa jedinice u MS Visual Studio
- sadržaj
- izvršenje
- 2. Priprema teksta modula Program.cs
- 2.2. Učinite javnu klasu programa
- 3. Popis testiranog programa
- 4. Izrada testa
- 4.1. Dodavanje novog projekta u rješenje
- 4.2. Struktura otopine
- 4.3. Tekst datoteke "UnitTest1.cs". Atributi [TestMethod] i [TestClass]
- 4.4. Unošenje izmjena u tekst modula UnitTest1. Promjena naziva metode testiranja
- 4.5. Povezivanje projekta MinApp s projektom TestMinApp
- 4.6. Unošenje izmjena u tekst modula UnitTest1.cs
- 4.6.2. TestMin () tekstni metod
- 4.7. Tekst modula UnitTest1.cs
- 5. Pokrenite test i provjerite rezultat testa
- 6. Rezultat. Interakcija između projekata
Ova tema opisuje postupak izrade jednostavnog testa jedinice u Microsoft Visual Studio 2010 (C #) za aplikaciju kao što je konzolna aplikacija. Na ovom primjeru možete naučiti kako izraditi vlastite testove jedinica. Primjer također pokazuje korištenje klase Assert za testiranje rada funkcija.
sadržaj
Stanje problema
Za aplikaciju kao što je konzolna aplikacija, razvite test jedinice koji testira rad funkcije Min (), koja određuje maksimalni element od tri broja.
Za funkciju Min () postavite testnu metodu na TestMin (). Provjerite funkciju.
izvršenje
1. Izradite aplikaciju pomoću predloška aplikacije Konzola
Pokrenite MS Visual Studio 2010 za izvršavanje.Za izradu projekta pomoću obrasca konzolne aplikacije, mora se pozvati sljedeći slijed naredbi:
Datoteka -> Novo -> Projekt ...
Stoga se otvara prozor Novi projekt. U prozoru odaberite predložak aplikacije konzole kao što je prikazano na slici 1. Predložak je odabran na kartici Visual C #.
Visual C # -> konzolna aplikacija
Sl. 1. Prozor "Novi projekt". Odabir primjene konzolne aplikacije
2. Priprema teksta modula Program.cs
2.1. Dodaj Min () funkciju u tekst modula
Tekst funkcije Min () treba dodati u tijelo klase programa.
Funkcija je deklarirana kao javna (statična) i javna. Min () tekstualni tekst
javna statička int Min (int a, int b, int c) {int min = a; ako (min> b) min = b; ako (min> c) min = c; povratak min; }
Sl. 2. Pregled prozora MS Visual Studio 2010, modul “Program.cs”
2.2. Učinite javnu klasu programa
Da biste imali pristup Min () funkciji klase Programa, morate učiniti ovu klasu javno dostupnom. Da biste to učinili, prije deklariranja klase morate definirati javnu ključnu riječ.
... prostor imena MinApp {javna klasa Program {// metode klasa // ...}} ...
Nakon toga, test program je spreman.
3. Popis testiranog programa
U ovom trenutku, popis programa koji se testira je sljedeći:
pomoću sustava; pomoću System.Collections.Generic; pomoću System.Linq; pomoću System.Text; imenski prostor MinApp {javna klasa Program {javna statična int Min (int a, int b, int c) {int min = a; ako (min> b) min = b; ako (min> c) min = c; povratak min; } static void Main (string [] args) {Console.WriteLine ("Demo testiranja jedinica u C #."); }}}
Budući da će ovaj program biti testiran iz drugog testnog modula, nema potrebe unositi ništa drugo u Main () funkciju. Budući da, u skladu s uvjetom problema, trebate testirati rad funkcije Min (). A to će biti učinjeno iz modula za testiranje. Trenutno je naš program spreman za testiranje.
4. Izrada testa
Test se kreira posebnim projektom (Project) u rješenju (Solution). Program koji se testira ne zna za to. Program koji će testirati (program testiranja) će pozvati funkcije programa koji se testira. U našem slučaju test program će pozvati funkciju
int Min (int, int, int);
4.1. Dodavanje novog projekta u rješenje
Za ovo rješenje (rješenje) morate dodati novi projekt pomoću naredbe
Datoteka-> Dodaj-> Novi projekt ...
Prozor za stvaranje novog projekta prikazan je na slici 3.
Sl. 3. Prozor za izradu projekta tipa testnog projekta
U prozoru je odabrana grupa Visual C # predložaka -> Test. Iz prikazanih predložaka odabran je predložak projekta "Test Project". U polje "Ime" označava se naziv projekta koji će testirati naš program. Morate postaviti, na primjer, TestMinApp. Projekt se nalazi u zasebnoj mapi "E: Test MinApp".
Sl. 4. Tekst modula UnitTest1.cs. Prozor programa Solution Explorer s prikazanim projektima TestMinApp i MinApp
4.2. Struktura otopine
Kao što se može vidjeti na slici 4, uslužni program Solution Explorer prikazuje strukturu stavki rješenja koja sadrži dva projekta:
- projekt MinApp. Ovo je projekt stvoren pomoću predloška aplikacije konzole s funkcijom Min () koju želite protestirati;
- Projekt TestMinApp. Ovaj projekt je osmišljen kako bi testirao značajke projekta MinApp. Programski kod koji testira funkciju Min () bit će unesen u datoteku projekta UnitTest1 projekta TestMinApp.
Oba projekta mogu se provoditi neovisno jedan o drugom.
4.3. Tekst datoteke "UnitTest1.cs". Atributi [TestMethod] i [TestClass]
U projektu TestMinApp testna datoteka UnitTest1.cs je od primarnog interesa. Ova datoteka sadrži metode koje će testirati funkcije MinApp projekta. Projekt TestMinApp može sadržavati bilo koji broj datoteka koje sadrže testove (na primjer, UnitTest2.cs, UnitTest3.cs, itd.).
Popis datoteke UnitTest1.cs koju generira MS Visual Studio 2010 je sljedeći:
pomoću sustava; pomoću System.Text; pomoću System.Collections.Generic; pomoću System.Linq; pomoću Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Sažeti opis za UnitTest1 /// </ summary> [TestClass] javna klasa UnitTest1 {public UnitTest1 () {// // TODO: Dodaj logiku konstruktora ovdje //} privatni TestContext testContextInstance; /// <summary> /// Dobiva ili postavlja kontekst testa. /// </ summary> public TestContext TestContext {dobiti {vratiti testContextInstance; } set {testContextInstance = vrijednost; }} #region Dodatni testni atributi // možete koristiti testove // // Upotrebiti ClassInitialize // [ClassInitialize ()] // public static voID za pokretanje koda prije pokretanja svakog testa // [TestInitialize ()] // public void MyTestInitialize () {} // // Koristite TestCleanup za pokretanje koda nakon što je svaki test pokrenut // [TestCleanup ()] // public void MyTestCleanup () ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: ovdje dodajte probnu logiku //}}}
Kao što se može vidjeti iz gornjeg koda, datoteka sadrži klasu pod nazivom UnitTest1. Klasa ima javnu metodu pod nazivom TestMethod1 (). Prije implementacije metode TestMethod1 (), postavljen je atribut [TestMethod]. To znači da morate unijeti kod koji će testirati funkcije MinApp projekta u tijelu metode.
U razredu možete unijeti bilo koji broj metoda koje će testirati različite funkcije iz različitih modula. Glavno je da su ove metode označene atributom [TestMethod].
4.4. Unošenje izmjena u tekst modula UnitTest1. Promjena naziva metode testiranja
Možete promijeniti imena metoda i dodati nove metode koje su označene s [TestMethod] atributom u UnitTest1.cs modulu. S obzirom na to, u tekstu modula UnitTest1.cs, trebate preimenovati metodu TestMethod1 () u TestMin ().
Nakon izmjena skraćeni tekst modula datoteke UnitTest1.cs bit će:
pomoću sustava; pomoću System.Text; pomoću System.Collections.Generic; pomoću System.Linq; pomoću Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Sažeti opis za UnitTest1 /// </ summary> [TestClass] javna klasa UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Dodaj test logika ovdje //}}}
4.5. Povezivanje projekta MinApp s projektom TestMinApp
Da biste imali pristup Min () funkciji (MinApp projekt) iz projekta TestMinApp, morate povezati prostor imena u kojem se ova funkcija nalazi.
Da biste to učinili, prvo morate pozvati kontekstni izbornik za TestMinApp projekt. Zatim u kontekstnom izborniku trebate nazvati naredbu “Add Reference ...” (Slika 5).
Sl. 5. Tim "Dodaj reference ..."
Kao rezultat, otvorit će se prozor Add Reference u kojem morate odabrati MinApp projekt.
Sl. 6. Prozor "Dodaj referencu". Povezivanje projekta MinApp
Nakon dovršenih radnji, funkcije MinApp projekta bit će dostupne za korištenje u projektu TestMinApp.
Sl. 7. Kartica Reference s povezanim MinApp projektom
4.6. Unošenje izmjena u tekst modula UnitTest1.cs
4.6.1. Dodavanje prostora naziva MinApp u modul UnitTest1.cs
U ovom koraku, u UnitTest1.cs modulu, morate dodati MinApp imenski prostor koristeći direktivu using: \ t
pomoću sustava; pomoću System.Text; pomoću System.Collections.Generic; pomoću System.Linq; pomoću Microsoft.VisualStudio.TestTools.UnitTesting; koristeći MinApp; namespace TestMinApp {...}
4.6.2. TestMin () tekstni metod
U tekstu metode TestMin () unesite sljedeći kôd:
... [TestMethod] public void TestMin () {// // TODO: Dodaj testnu logiku ovdje // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (2, min); } ...
4.7. Tekst modula UnitTest1.cs
Tekst cijelog UnitTest1.cs modula je sljedeći:
pomoću sustava; pomoću System.Text; pomoću System.Collections.Generic; pomoću System.Linq; pomoću Microsoft.VisualStudio.TestTools.UnitTesting; koristeći MinApp; namespace TestMinApp {/// <summary> /// Sažeti opis za UnitTest1 /// </ summary> [TestClass] javna klasa UnitTest1 {public UnitTest1 () {// // TODO: Dodaj logiku konstruktora ovdje //} privatni TestContext testContextInstance; /// <summary> /// Dobiva ili postavlja kontekst testa. /// </ summary> public TestContext TestContext {dobiti {vratiti testContextInstance; } set {testContextInstance = vrijednost; }} #region Dodatni testni atributi // možete koristiti testove // // Upotrebiti ClassInitialize // [ClassInitialize ()] // public static voID za pokretanje koda prije pokretanja svakog testa // [TestInitialize ()] // public void MyTestInitialize () {} // // Koristite TestCleanup za pokretanje koda nakon što je svaki test pokrenut // [TestCleanup ()] // public void MyTestCleanup () ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: ovdje dodajte logiku testa // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (2, min); }}}
5. Pokrenite test i provjerite rezultat testa
U Microsoft Visual Studio 2010, poseban izbornik naredbi pod nazivom Test je implementiran za rad s testovima jedinice.
Da biste pokrenuli test izvršenja, odaberite jednu od naredbi.
Test -> Pokreni -> Testovi u trenutnom kontekstuili
Test -> Pokreni -> Svi testovi u rješenju
kao što je prikazano na slici 8.
Sl. 8. Pozovite naredbu za pokretanje testa i pogledajte rezultat.
Nakon pokretanja testa, rezultat se može vidjeti na dnu prozora Testni rezultati. Kao što se može vidjeti iz slike, test nije prošao. To je logično, jer u funkciji Assert.AreEqual () uspoređujemo brojeve 2 i 3, koji su različiti. Ovdje je umjesto 2 posebno uveden broj 2.
Ako umjesto broja 2 unesete točan odgovor - broj 3 (najmanje između 3, 4, 5), test će se proći (slika 9). U ovom slučaju, tekst metode TestMin () bit će sljedeći:
... [TestMethod] public void TestMin () {// // TODO: Dodaj testnu logiku ovdje // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (3, min); } ...
Prozor rezultata prikazan je na slici 9. \ t
Sl. 9. Rezultat testa za slučaj, ako unesete točan odgovor
Sada možemo zaključiti da funkcija Min () za ovaj slučaj radi ispravno.
6. Rezultat. Interakcija između projekata
U ovom radu, u rješenju se formiraju dva projekta. Jedan MinApp projekt sadrži Min () funkciju koju želite testirati. Drugi projekt, TestMinApp, sadrži metode testiranja.
U Microsoft Visual Studio 2010, svaki projekt se pokreće koristeći različite naredbe izbornika. Dakle, MinApp projekt se pokreće na standardni način iz izbornika Pokreni. Projekt TestMinApp pokrenut je iz posebnog Test izbornika.