C #. Eksempel på å lage en enhetstest i MS Visual Studio
- Innholdet
- utførelse
- 2. Forberedelse av modulen Program.cs
- 2.2. Lag programklassen offentlig
- 3. Oppføring av testet program
- 4. Opprette en test
- 4.1. Legge til et nytt prosjekt for løsningen
- 4.2. Løsningsstruktur
- 4.3. Teksten til filen "UnitTest1.cs". Attributter [TestMethod] og [TestClass]
- 4.4. Gjør endringer i teksten til UnitTest1-modulen. Endre navnet på testmetoden
- 4.5. Koble MinApp-prosjektet til TestMinApp-prosjektet
- 4.6. Gjør endringer i teksten til modulen UnitTest1.cs
- 4.6.2. TestMin () metode tekst
- 4.7. UnitTest1.cs modul tekst
- 5. Kjør testen og kontroller testresultatet
- 6. Resultatet. Samspill mellom prosjekter
Dette emnet beskriver trinnvis prosessen med å lage en enkel Unit Test i Microsoft Visual Studio 2010 (C #) for et program som Console Application. Ved hjelp av dette eksempelet kan du lære hvordan du lager dine egne Enhetstester. Eksemplet demonstrerer også bruken av Assert-klassen for å teste driften av funksjoner.
Innholdet
Forholdet til problemet
For et program som Console Application, utvikle en Unit test som tester operasjonen av Min () -funksjonen, som bestemmer maksimumselementet i tre tall.
For Min () -funksjonen, sett testmetoden til TestMin (). Kontroller funksjonen.
utførelse
1. Opprett et program ved hjelp av konsollen Applicaiton-malen
Kjør MS Visual Studio 2010 for utførelse. For å opprette et prosjekt ved hjelp av konsollprogrammet, må følgende kommandosekvens bli kalt:
Fil -> Ny -> Prosjekt ...
Som et resultat åpnes vinduet Nytt prosjekt. I vinduet velger du konsollprogrammalen som vist på figur 1. Malen er valgt i kategorien Visual C #.
Visual C # -> Console Application
Fig. 1. Vinduet "Nytt prosjekt". Velge en applikasjon av konsoll-applikasjonstype
2. Forberedelse av modulen Program.cs
2.1. Legg til Min () -funksjon til modultekst
Legg i teksten til Min () -funksjonen i programkursens kropp.
Funksjonen er erklært som offentlig (statisk) og offentlig. Min () funksjonstekst
offentlig statisk int Min (int a, int b, int c) {int min = a; hvis (min> b) min = b; hvis (min> c) min = c; return min; }
Fig. 2. Visning av MS Visual Studio 2010-vinduet, modul "Program.cs"
2.2. Lag programklassen offentlig
For å få tilgang til Min () -funksjonen i programklassen må du gjøre denne klassen offentlig tilgjengelig. For å gjøre dette, før du erklære en klasse, må du definere det offentlige søkeordet.
... navneområde MinApp {offentlig klasse Program {// klassemetoder // ...}} ...
Deretter er testprogrammet klart.
3. Oppføring av testet program
For øyeblikket er oppføringen av programmet som testes, følgende:
bruker system; bruker System.Collections.Generic; bruker System.Linq; bruker System.Text; namespace MinApp {offentlig klasse Program {offentlig statisk int Min (int a, int b, int c) {int min = a; hvis (min> b) min = b; hvis (min> c) min = c; return min; } static void Main (streng [] args) {Console.WriteLine ("Demo of Unit-testing i C #."); }}}
Siden dette programmet vil bli testet fra en annen testmodul, er det ikke nødvendig å skrive inn noe annet i hovedfunksjonen (). Fordi, i samsvar med tilstanden til problemet, må du teste operasjonen av Min () -funksjonen. Og dette vil bli gjort fra testmodulen. For øyeblikket er vårt program klar for testing.
4. Opprette en test
Testen er opprettet av et eget prosjekt (Prosjekt) i løsningen (løsning). Programmet som testes, vet ikke om det. Programmet som skal testes (testprogrammet) vil ringe funksjonene til programmet som testes. I vårt tilfelle vil testprogrammet ringe til funksjonen
int Min (int, int, int);
4.1. Legge til et nytt prosjekt for løsningen
For denne løsningen (løsning) må du legge til et nytt prosjekt ved hjelp av kommandoen
Fil-> Legg til-> Nytt prosjekt ...
Vinduet for å opprette et nytt prosjekt er vist i figur 3.
Fig. 3. Vindu for å lage et prosjekt av typen Testprosjekt
En gruppe av Visual C # maler -> Test er valgt i vinduet. Fra de viste maler er prosjektmalen "Testprosjekt" valgt. I feltet "Navn" oppgis navnet på prosjektet som vil teste programmet vårt. Du må angi, for eksempel, TestMinApp. Prosjektet ligger i en egen mappe "E: \ Test \ MinApp".
Fig. 4. Teksten til modulen UnitTest1.cs. Løsnings Explorer-verktøylinje med TestMinApp og MinApp-prosjekter vises
4.2. Løsningsstruktur
Som det fremgår av figur 4, viser Solution Explorer-verktøyet Løsningselementstrukturen, som inneholder to prosjekter:
- prosjekt MinApp. Dette er et prosjekt opprettet ved hjelp av konsollprogrammalen med Min () -funksjonen du vil protestere for;
- TestMinApp prosjekt. Dette prosjektet er designet for å teste funksjonene i MinApp-prosjektet. Programkoden som tester Min () -funksjonen vil bli lagt inn i UnitTest1-prosjektfilen til TestMinApp-prosjektet.
Begge prosjektene kan utføres uavhengig av hverandre.
4.3. Teksten til filen "UnitTest1.cs". Attributter [TestMethod] og [TestClass]
I TestMinApp-prosjektet er testfilen UnitTest1.cs av primær interesse. Denne filen inneholder metoder som vil teste funksjonene til MinApp-prosjektet. TestMinApp-prosjektet kan inneholde et hvilket som helst antall filer som inneholder tester (for eksempel UnitTest2.cs, UnitTest3.cs, etc.).
Oppføringen av UnitTest1.cs filen generert av MS Visual Studio 2010 er som følger:
bruker system; bruker System.Text; bruker System.Collections.Generic; bruker System.Linq; bruker Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Oppsummeringsbeskrivelse for UnitTest1 /// </ summary> [TestClass] offentlig klasse UnitTest1 {offentlig UnitTest1 () {// // TODO: Legg til konstruktørlogikk her //} privat TestContext testContextInstance; /// <summary> /// Går eller setter testkonteksten. /// </ summary> offentlig TestContext TestContext {get {return testContextInstance; } sett {testContextInstance = value; }} #region Ekstra testattributter // du kan bruke testene dine // // Bruk ClassInitialize // [ClassInitialize ()] // offentlig statisk tomrom MyClassInitialize (TestContext testContext) {} // // Bruk ClassCleanup til å kjøre kode etter at alle tester i en klasse har kjørt // [ClassCleanup ()] // offentlig statisk tomrom MyClassCleanup () {} // // Bruk TestInitialize å kjøre koden før du kjører hver test // [TestInitialize ()] // public void MyTestInitialize () {} // // Bruk TestCleanup ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: Legg til testlogikk her //}}}
Som det fremgår av koden ovenfor, inneholder filen en klasse som heter UnitTest1. Klassen har en offentlig metode kalt TestMethod1 (). Før du implementerer TestMethod1 () -metoden, er [TestMethod] -attributtet plassert. Dette betyr at du må skrive inn koden som vil teste funksjonene til MinApp-prosjektet i metoden.
I klassen kan du skrive inn et hvilket som helst antall metoder som vil teste forskjellige funksjoner fra forskjellige moduler. Det viktigste er at disse metodene er merket med [TestMethod] -attributtet.
4.4. Gjør endringer i teksten til UnitTest1-modulen. Endre navnet på testmetoden
Du kan endre navnene på metoder og legge til nye metoder som er merket med [TestMethod] -attributtet i UnitTest1.cs-modulen. Gitt dette, i teksten til UnitTest1.cs-modulen, må du endre navn på TestMethod1 () -metoden til TestMin ().
Etter at endringene er gjort, vil den forkortede teksten til modulen i UnitTest1.cs-filen være:
bruker system; bruker System.Text; bruker System.Collections.Generic; bruker System.Linq; bruker Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Oppsummeringsbeskrivelse for UnitTest1 /// </ summary> [TestClass] offentlig klasse UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Legg til test logikk her //}}}
4.5. Koble MinApp-prosjektet til TestMinApp-prosjektet
For å få tilgang til Min () -funksjonen (MinApp-prosjektet) fra TestMinApp-prosjektet, må du koble til navneområdet der denne funksjonen er plassert.
For å gjøre dette må du først og fremst ringe til kontekstmenyen for TestMinApp-prosjektet. Deretter i kontekstmenyen må du ringe kommandoen "Legg til referanse ..." (Figur 5).
Fig. 5. Team "Add Referencse ..."
Som et resultat vil vinduet Legg til referanse åpnes, der du må velge MinApp-prosjektet.
Fig. 6. Vindu "Legg til referanse". Koble prosjektet MinApp
Etter de fullførte handlingene vil MinApp-prosjektfunksjonene være tilgjengelige for bruk i TestMinApp-prosjektet.
Fig. 7. Referanser-fanen med tilkoblet MinApp-prosjekt
4.6. Gjør endringer i teksten til modulen UnitTest1.cs
4.6.1. Legge til MinApp-navneområdet til UnitTest1.cs-modulen
På dette trinnet, i UnitTest1.cs-modulen, må du legge til MinApp-navneområdet ved hjelp av direktivet:
bruker system; bruker System.Text; bruker System.Collections.Generic; bruker System.Linq; bruker Microsoft.VisualStudio.TestTools.UnitTesting; bruker MinApp; navneområde TestMinApp {...}
4.6.2. TestMin () metode tekst
I teksten til TestMin () -metoden, skriv inn følgende kode:
... [TestMethod] public void TestMin () {// // TODO: Legg til testlogikk her // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (2, min); } ...
4.7. UnitTest1.cs modul tekst
Teksten til hele UnitTest1.cs-modulen er som følger:
bruker system; bruker System.Text; bruker System.Collections.Generic; bruker System.Linq; bruker Microsoft.VisualStudio.TestTools.UnitTesting; bruker MinApp; namespace TestMinApp {/// <summary> /// Oppsummeringsbeskrivelse for UnitTest1 /// </ summary> [TestClass] offentlig klasse UnitTest1 {offentlig UnitTest1 () {// // TODO: Legg til konstruktørlogikk her //} privat TestContext testContextInstance; /// <summary> /// Går eller setter testkonteksten. /// </ summary> offentlig TestContext TestContext {get {return testContextInstance; } sett {testContextInstance = value; }} #region Ekstra testattributter // du kan bruke testene dine // // Bruk ClassInitialize // [ClassInitialize ()] // offentlig statisk tomrom MyClassInitialize (TestContext testContext) {} // // Bruk ClassCleanup til å kjøre kode etter at alle tester i en klasse har kjørt // [ClassCleanup ()] // offentlig statisk tomrom MyClassCleanup () {} // // Bruk TestInitialize å kjøre koden før du kjører hver test // [TestInitialize ()] // public void MyTestInitialize () {} // // Bruk TestCleanup ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: Legg til testlogikk her // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (2, min); }}}
5. Kjør testen og kontroller testresultatet
I Microsoft Visual Studio 2010 er en spesiell meny med kommandoer kalt Test implementert for å arbeide med Unit tester.
For å kjøre en utførelsestest, velg en av kommandoene.
Test -> Kjør -> Tester i nåværende konteksteller
Test -> Kjør -> Alle testene i løsningen
som vist i figur 8.
Fig. 8. Ring på starttestkommandoen og se resultatet.
Etter å ha kjørt testen, kan resultatet vises nederst i vinduet Testresultater. Som det fremgår av figuren, er testen ikke bestått. Dette er logisk, siden i Assert.AreEqual () -funksjonen sammenligner vi tallene 2 og 3, som er forskjellige. Her er nummer 2 introdusert spesielt i stedet for 3.
Hvis du i stedet for nummer 2 skriver inn riktig svar - nummer 3 (minimum mellom 3, 4, 5), vil testen bli bestått (figur 9). I dette tilfellet vil teksten til TestMin () -metoden være som følger:
... [TestMethod] public void TestMin () {// // TODO: Legg til testlogikk her // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (3, min); } ...
Resultatvinduet er vist i figur 9.
Fig. 9. Test resultatet for saken, hvis du skriver inn det riktige svaret
Nå kan vi konkludere med at Min () -funksjonen for denne saken fungerer riktig.
6. Resultatet. Samspill mellom prosjekter
I dette papiret dannes to prosjekter i løsningen. Ett MinApp-prosjekt inneholder Min () -funksjonen du vil teste. Det andre prosjektet, TestMinApp, inneholder testmetoder.
I Microsoft Visual Studio 2010 lanseres hvert prosjekt ved hjelp av forskjellige menykommandoer. Så blir MinApp-prosjektet lansert på standard måte fra Run-menyen. Og TestMinApp-prosjektet lanseres fra den spesielle Test-menyen.