C #. Eksempel på oprettelse af en enhedsprøve i MS Visual Studio
- Indholdet
- udførelse
- 2. Forberedelse af modulet Program.cs
- 2.2. Lav programklassen offentlig
- 3. Liste over det testede program
- 4. Oprettelse af en test
- 4.1. Tilføjelse af et nyt projekt til løsningen
- 4.2. Løsningsstruktur
- 4.3. Teksten til filen "UnitTest1.cs". Attributter [TestMethod] og [TestClass]
- 4.4. Ændrer teksten til UnitTest1-modulet. Ændre navnet på testmetoden
- 4.5. Tilslutning af MinApp-projektet til TestMinApp-projektet
- 4.6. Ændrer teksten til modulet UnitTest1.cs
- 4.6.2. TestMin () metode tekst
- 4.7. UnitTest1.cs modul tekst
- 5. Kør testen og kontroller testresultatet
- 6. Resultatet. Samspil mellem projekter
Dette emne beskriver trin for trin processen med at oprette en simpel Unit Test i Microsoft Visual Studio 2010 (C #) til et program som Console Application. Ved hjælp af dette eksempel kan du lære at oprette dine egne enhedsprøver. Eksemplet demonstrerer også brugen af Assert-klassen for at teste driften af funktioner.
Indholdet
Problemerne med problemet
For en applikation som Console Application skal du udvikle en enhedsprøve, der tester funktionen Min (), som bestemmer det maksimale element i tre tal.
For Min () -funktionen skal testmetoden indstilles til TestMin (). Kontroller funktionen.
udførelse
1. Opret et program ved hjælp af skabelonen Console Application
Kør MS Visual Studio 2010 til udførelse. For at oprette et projekt ved hjælp af konsolprogrammet skal følgende kommandosekvens kaldes:
Fil -> Ny -> Projekt ...
Som et resultat åbnes vinduet Nyt projekt. I vinduet skal du vælge konsolprogrammets skabelon som vist i figur 1. Skabelonen er valgt i fanen Visual C #.
Visual C # -> Console Application
Fig. 1. Vindue "Nyt projekt". Valg af applikation af Console Application Type
2. Forberedelse af modulet Program.cs
2.1. Tilføj Min () funktion til modul tekst
I programkursens krop skal du tilføje teksten i Min () -funktionen.
Funktionen erklæres som offentlig (statisk) og offentlig. Min () funktionstekst
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 af vinduet MS Visual Studio 2010, modul "Program.cs"
2.2. Lav programklassen offentlig
For at få adgang til Min () -funktionen i programklassen, skal du gøre denne klasse offentligt tilgængelig. For at gøre dette, før du erklærer en klasse, skal du definere det offentlige søgeord.
... navneområde MinApp {Public Class Program {// klasse metoder // ...}} ...
Derefter er testprogrammet klar.
3. Liste over det testede program
I øjeblikket er fortegnelsen over det testede program følgende:
bruger system; ved hjælp af System.Collections.Generic; ved hjælp af System.Linq; ved hjælp af System.Text; navneområde 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; } statisk tomrum Main (string [] args) {Console.WriteLine ("Demo of Unit-test i C #."); }}}
Da dette program vil blive testet fra et andet testmodul, er der ikke behov for at indtaste noget andet i hovedfunktionen (). Fordi i overensstemmelse med betingelsen for problemet, skal du teste funktionen af Min () -funktionen. Og dette vil ske fra testmodulet. I øjeblikket er vores program klar til test.
4. Oprettelse af en test
Testen er oprettet af et separat projekt (Projekt) i løsningen (Solution). Det program, der testes, ved ikke om det. Programmet, der vil teste (testprogrammet), kalder funktionerne i programmet, der testes. I vores tilfælde vil testprogrammet kalde funktionen
int Min (int, int, int);
4.1. Tilføjelse af et nyt projekt til løsningen
For denne løsning (Solution) skal du tilføje et nyt projekt ved hjælp af kommandoen
Fil-> Tilføj-> Nyt projekt ...
Vinduet til oprettelse af et nyt projekt er vist i figur 3.
Fig. 3. Vindue til oprettelse af et projekt af typen Testprojekt
En gruppe af Visual C # -skabeloner -> Test er valgt i vinduet. Fra de viste skabeloner vælges projektmallet "Testprojekt". I feltet "Navn" angives navnet på projektet, som vil teste vores program. Du skal indstille, for eksempel TestMinApp. Projektet er placeret i en separat mappe "E: \ Test \ MinApp".
Fig. 4. Teksten til modulet UnitTest1.cs. Solution Explorer utility vindue med TestMinApp og MinApp projekter vises
4.2. Løsningsstruktur
Som det fremgår af figur 4, viser Solution Explorer-værktøjet Løsningselementstrukturen, som indeholder to projekter:
- projekt MinApp. Dette er et projekt, der er oprettet ved hjælp af skabelonen Console Application med funktionen Min (), som du vil protestere for.
- TestMinApp projekt. Dette projekt er designet til at teste funktionerne i MinApp projektet. Programkoden, der tester Min () -funktionen, vil blive indtastet i UnitTest1-projektfilen af TestMinApp-projektet.
Begge projekter kan udføres uafhængigt af hinanden.
4.3. Teksten til filen "UnitTest1.cs". Attributter [TestMethod] og [TestClass]
I TestMinApp-projektet er testfilen UnitTest1.cs af primær interesse. Denne fil indeholder metoder, som vil teste funktionerne i MinApp-projektet. TestMinApp-projektet kan indeholde et hvilket som helst antal filer, der indeholder tests (f.eks. UnitTest2.cs, UnitTest3.cs osv.).
Listingen af UnitTest1.cs filen genereret af MS Visual Studio 2010 er som følger:
bruger system; ved hjælp af System.Text; ved hjælp af System.Collections.Generic; ved hjælp af System.Linq; ved hjælp af Microsoft.VisualStudio.TestTools.UnitTesting; navneområde TestMinApp {/// <summary> /// Oversigt over UnitTest1 /// </ summary> [TestClass] offentlig klasse UnitTest1 {public UnitTest1 () {// // TODO: Tilføj konstruktørlogik her //} privat TestContext testContextInstance; /// <summary> /// Går eller sætter testkonteksten. /// </ summary> public TestContext TestContext {get {return testContextInstance; } sæt {testContextInstance = value; }} #region Yderligere testattributter // du kan bruge dine tests // // Brug ClassInitialize // [ClassInitialize ()] // Offentlig statisk tomrum MyClassInitialize (TestContext testContext) {} // // Brug ClassCleanup til at køre kode, når alle tests i en klasse er kørt // [ClassCleanup ()] // offentlige statiske tomrum MyClassCleanup () {} // // Brug TestInitialize at køre koden, før hver test udføres // [TestInitialize ()] // offentlig tomgang MyTestInitialize () {} // // Brug TestCleanup til at køre koden efter hver test har kørt // [TestCleanup ()] // public void MyTestCleanup ( ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: Tilføj testlogik her //}}}
Som det fremgår af ovenstående kode, indeholder filen en klasse ved navn UnitTest1. Klassen har en offentlig metode kaldet TestMethod1 (). Før du gennemfører metoden TestMethod1 (), er attributten [TestMethod] placeret. Det betyder, at du skal indtaste koden, der vil teste MinApp-projektets funktioner i metoden.
I klassen kan du indtaste et hvilket som helst antal metoder, der vil teste forskellige funktioner fra forskellige moduler. Det vigtigste er, at disse metoder er markeret med attributten [TestMethod].
4.4. Ændrer teksten til UnitTest1-modulet. Ændre navnet på testmetoden
Du kan ændre navnene på metoder og tilføje nye metoder, der er markeret med attributten [TestMethod] i UnitTest1.cs-modulet. I betragtning af dette, i teksten i UnitTest1.cs-modulet, skal du omdøbe testmetoden1 () -metoden til TestMin ().
Efter ændringerne er den forkortede tekst af modulet i UnitTest1.cs filen:
bruger system; ved hjælp af System.Text; ved hjælp af System.Collections.Generic; ved hjælp af System.Linq; ved hjælp af Microsoft.VisualStudio.TestTools.UnitTesting; navneområde TestMinApp {/// <summary> /// Oversigt over UnitTest1 /// </ summary> [TestClass] offentlig klasse UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Tilføj test logik her //}}}
4.5. Tilslutning af MinApp-projektet til TestMinApp-projektet
For at få adgang til Min () -funktionen (MinApp-projektet) fra TestMinApp-projektet, skal du forbinde navneområdet, hvor denne funktion er placeret.
For at gøre dette skal du først og fremmest kalde kontekstmenuen til TestMinApp-projektet. Så i kontekstmenuen skal du kalde kommandoen "Tilføj Reference ..." (Figur 5).
Fig. 5. Team "Tilføj referencse ..."
Som et resultat vil vinduet Add Reference åbnes, hvor du skal vælge MinApp-projektet.
Fig. 6. Vindue "Tilføj reference". Tilslutning af projektet MinApp
Efter de gennemførte handlinger vil MinApp-projektfunktionerne være tilgængelige til brug i TestMinApp-projektet.
Fig. 7. Fanen Referencer med tilsluttet MinApp-projekt
4.6. Ændrer teksten til modulet UnitTest1.cs
4.6.1. Tilføjelse af MinApp navneområde til UnitTest1.cs modulet
På dette trin, i UnitTest1.cs-modulet, skal du tilføje MinApp navneområde ved hjælp af direktivet:
bruger system; ved hjælp af System.Text; ved hjælp af System.Collections.Generic; ved hjælp af System.Linq; ved hjælp af Microsoft.VisualStudio.TestTools.UnitTesting; ved hjælp af MinApp; navneområde TestMinApp {...}
4.6.2. TestMin () metode tekst
I teksten til testmin () -metoden skal du indtaste følgende kode:
... [TestMethod] public void TestMin () {// // TODO: Tilføj testlogik her // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (2, min); } ...
4.7. UnitTest1.cs modul tekst
Teksten til hele UnitTest1.cs modulet er som følger:
bruger system; ved hjælp af System.Text; ved hjælp af System.Collections.Generic; ved hjælp af System.Linq; ved hjælp af Microsoft.VisualStudio.TestTools.UnitTesting; ved hjælp af MinApp; navneområde TestMinApp {/// <summary> /// Oversigt over UnitTest1 /// </ summary> [TestClass] offentlig klasse UnitTest1 {public UnitTest1 () {// // TODO: Tilføj konstruktørlogik her //} privat TestContext testContextInstance; /// <summary> /// Går eller sætter testkonteksten. /// </ summary> public TestContext TestContext {get {return testContextInstance; } sæt {testContextInstance = value; }} #region Yderligere testattributter // du kan bruge dine tests // // Brug ClassInitialize // [ClassInitialize ()] // Offentlig statisk tomrum MyClassInitialize (TestContext testContext) {} // // Brug ClassCleanup til at køre kode, når alle tests i en klasse er kørt // [ClassCleanup ()] // offentlige statiske tomrum MyClassCleanup () {} // // Brug TestInitialize at køre koden, før hver test udføres // [TestInitialize ()] // offentlig tomgang MyTestInitialize () {} // // Brug TestCleanup til at køre koden efter hver test har kørt // [TestCleanup ()] // public void MyTestCleanup ( ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: Tilføj testlogik her // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (2, min); }}}
5. Kør testen og kontroller testresultatet
I Microsoft Visual Studio 2010 implementeres en særlig menu med kommandoer, der kaldes Test, for at arbejde med Unit tests.
For at køre en udførelsestest, vælg en af kommandoerne.
Test -> Kør -> Test i nuværende konteksteller
Test -> Kør -> Alle test i løsning
som vist i figur 8.
Fig. 8. Ring til starttestkommandoen og se resultatet.
Efter at have kørt testen, kan resultatet ses nederst i vinduet Testresultater. Som det fremgår af figuren, er testen ikke bestået. Dette er logisk, da i funktionen Assert.AreEqual () sammenligner vi tallene 2 og 3, som er forskellige. Her indføres nummer 2 specielt i stedet for 3.
Hvis du i stedet for nummer 2 indtaster det korrekte svar - nummer 3 (minimum mellem 3, 4, 5), vil testen blive bestået (figur 9). I dette tilfælde vil teksten i TestMin () -metoden være som følger:
... [TestMethod] public void TestMin () {// // TODO: Tilføj testlogik her // int min; min = Program. Min (3, 4, 5); Assert .AreEqual (3, min); } ...
Resultatvinduet er vist i figur 9.
Fig. 9. Test resultatet for sagen, hvis du indtaster det korrekte svar
Nu kan vi konkludere, at Min () -funktionen til denne sag fungerer korrekt.
6. Resultatet. Samspil mellem projekter
I dette papir dannes to projekter i løsningen. Et MinApp-projekt indeholder Min () -funktionen, som du vil teste. Det andet projekt, TestMinApp, indeholder testmetoder.
I Microsoft Visual Studio 2010 lanceres hvert projekt ved hjælp af forskellige menukommandoer. Så er MinApp-projektet lanceret på standard måde fra menuen Kør. Og TestMinApp-projektet lanceres fra den specielle testmenu.