C #. Primer ustvarjanja testa enote v MS Visual Studio

  1. Vsebina
  2. Izvajanje
  3. 2. Priprava besedila modula Program.cs
  4. 2.2. Objavi razred programa
  5. 3. Seznam preizkušenega programa
  6. 4. Ustvarjanje testa
  7. 4.1. Dodajanje novega projekta v rešitev
  8. 4.2. Struktura raztopine
  9. 4.3. Besedilo datoteke "UnitTest1.cs". Atributi [TestMethod] in [TestClass]
  10. 4.4. Spreminjanje besedila modula UnitTest1. Spreminjanje imena preskusne metode
  11. 4.5. Povezovanje projekta MinApp s projektom TestMinApp
  12. 4.6. Spreminjanje besedila modula UnitTest1.cs
  13. 4.6.2. Besedilo metode TestMin ()
  14. 4.7. Besedilo modula UnitTest1.cs
  15. 5. Zaženite test in preverite rezultat testa
  16. 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

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; }

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".

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).

« (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.

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 kontekstu

ali

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.

Sorodne teme