C #. Voorbeeld van het maken van een eenheidscontrole in MS Visual Studio
- De inhoud
- executie
- 2. Voorbereiding van de programmeertekst van Program.cs
- 2.2. Maak de programma-klasse openbaar
- 3. Vermelding van het geteste programma
- 4. Een test maken
- 4.1. Een nieuw project aan de oplossing toevoegen
- 4.2. Oplossingsstructuur
- 4.3. De tekst van het bestand "UnitTest1.cs". Attributen [TestMethode] en [Testklasse]
- 4.4. Wijzigingen in de tekst van de UnitTest1-module aanbrengen. De naam van de testmethode wijzigen
- 4.5. Het MinApp-project verbinden met het TestMinApp-project
- 4.6. Wijzigingen aanbrengen in de tekst van de module UnitTest1.cs
- 4.6.2. TestMin () methode tekst
- 4.7. UnitTest1.cs module tekst
- 5. Voer de test uit en controleer het testresultaat
- 6. Het resultaat. Interactie tussen projecten
In dit onderwerp wordt het stapsgewijze proces beschreven voor het maken van een eenvoudige eenheidstest in Microsoft Visual Studio 2010 (C #) voor een toepassing zoals Console-toepassing. Aan de hand van dit voorbeeld kunt u leren hoe u uw eigen unit-tests kunt maken. Het voorbeeld toont ook het gebruik van de Assert-klasse voor het testen van de werking van functies.
De inhoud
De toestand van het probleem
Ontwikkel voor een toepassing als Console Application een unit-test die de werking van de functie Min () test, die het maximale element van drie getallen bepaalt.
Stel voor de functie Min () de testmethode in op TestMin (). Controleer de functie.
executie
1. Maak een toepassing met behulp van de Console Applicaiton-sjabloon
Voer MS Visual Studio 2010 uit voor uitvoering Om een project te maken met behulp van het Console-toepassingspatroon, moet de volgende reeks opdrachten worden aangeroepen:
Bestand -> Nieuw -> Project ...
Als gevolg hiervan wordt het venster Nieuw project geopend. Selecteer in het venster de consoletoepassingssjabloon zoals weergegeven in afbeelding 1. De sjabloon wordt geselecteerd op het tabblad Visual C #.
Visual C # -> Consoletoepassing
Fig. 1. Venster "Nieuw project". Een toepassing van het type console-toepassing kiezen
2. Voorbereiding van de programmeertekst van Program.cs
2.1. Voeg de Min () -functie toe aan module-tekst
De tekst van de functie Min () moet worden toegevoegd aan de hoofdtekst van de klasse Program.
De functie wordt gedeclareerd als openbaar (statisch) en openbaar. Min () functietekst
public static int Min (int a, int b, int c) {int min = a; als (min> b) min = b; als (min> c) min = c; keer terug min; }
Fig. 2. Weergave van het MS Visual Studio 2010-venster, module "Program.cs"
2.2. Maak de programma-klasse openbaar
Om toegang te krijgen tot de Min () -functie van de klasse Program moet u deze klasse openbaar maken. Hiertoe moet u, voordat u een klasse declareert, het openbare sleutelwoord definiëren.
... naamruimte MinApp {public class Program {// class methods // ...}} ...
Daarna is het testprogramma klaar.
3. Vermelding van het geteste programma
Op dit moment is de lijst van het programma dat wordt getest het volgende:
systeem gebruiken; met behulp van System.Collections.Generic; met behulp van System.Linq; met behulp van System.Text; naamruimte MinApp {public class Program {public static int Min (int a, int b, int c) {int min = a; als (min> b) min = b; als (min> c) min = c; keer terug min; } static void Main (string [] args) {Console.WriteLine ("Demo van Unit-testing in C #."); }}}
Aangezien dit programma wordt getest vanaf een andere testmodule, hoeft u niets anders in te voeren in de functie Main (). Omdat u, in overeenstemming met de staat van het probleem, de werking van de functie Min () moet testen. En dit zal worden gedaan vanuit de testmodule. Op dit moment is ons programma klaar om getest te worden.
4. Een test maken
De test wordt gemaakt door een afzonderlijk project (Project) in de oplossing (Oplossing). Het programma dat wordt getest weet er niets van. Het programma dat zal testen (het testprogramma) roept de functies van het programma dat getest wordt. In ons geval zal het testprogramma de functie oproepen
int Min (int, int, int);
4.1. Een nieuw project aan de oplossing toevoegen
Voor deze oplossing (oplossing) moet u een nieuw project toevoegen met behulp van de opdracht
Bestand-> Toevoegen-> Nieuw project ...
Het venster voor het maken van een nieuw project wordt getoond in Figuur 3.
Fig. 3. Venster voor het maken van een project van het type Testproject
Een groep Visual C # -sjablonen -> Test is geselecteerd in het venster. Van de weergegeven sjablonen is de projectsjabloon "Testproject" geselecteerd. In het veld "Naam" wordt de naam aangegeven van het project dat ons programma zal testen. U moet bijvoorbeeld TestMinApp instellen. Het project bevindt zich in een aparte map "E: \ Test \ MinApp".
Fig. 4. De tekst van de module UnitTest1.cs. Solution Explorer-venster met Projecten TestMinApp en MinApp weergegeven
4.2. Oplossingsstructuur
Zoals te zien is in Figuur 4, toont het hulpprogramma Solution Explorer de structuur Oplossingsitems, die twee projecten bevat:
- project MinApp. Dit is een project gemaakt met behulp van de consoletoepassingssjabloon met de Min () -functie waarvan u wilt protesteren;
- TestMinApp-project. Dit project is ontworpen om de functies van het MinApp-project te testen. De programmacode die de functie Min () test, wordt ingevoerd in het UnitTest1-projectbestand van het TestMinApp-project.
Beide projecten kunnen onafhankelijk van elkaar worden uitgevoerd.
4.3. De tekst van het bestand "UnitTest1.cs". Attributen [TestMethode] en [Testklasse]
In het TestMinApp-project is het testbestand UnitTest1.cs van primair belang. Dit bestand bevat methoden om de functies van het MinApp-project te testen. Het TestMinApp-project kan elk aantal bestanden bevatten dat tests bevat (bijvoorbeeld UnitTest2.cs, UnitTest3.cs, enz.).
De lijst van het bestand UnitTest1.cs gegenereerd door MS Visual Studio 2010 is als volgt:
systeem gebruiken; met behulp van System.Text; met behulp van System.Collections.Generic; met behulp van System.Linq; met behulp van Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Samenvatting beschrijving voor UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {public UnitTest1 () {// // TODO: Constructorlogica hier toevoegen //} private TestContext testContextInstance; /// <summary> /// Hiermee wordt de testcontext opgehaald of ingesteld. /// </ summary> openbare TestContext TestContext {krijg {return testContextInstance; } set {testContextInstance = waarde; }} #region Aanvullende testattributen // u kunt uw tests gebruiken // // Gebruik ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Gebruik ClassCleanup om code uit te voeren nadat alle tests in een klasse zijn uitgevoerd // [ClassCleanup ()] // openbare static void MyClassCleanup () {} // // Use TestInitialize om de code uit te voeren voordat elke test wordt uitgevoerd // [TestInitialize ()] // public void MyTestInitialize () {} // // Use TestCleanup ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: testlogica hier toevoegen //}}}
Zoals te zien is in de bovenstaande code, bevat het bestand een klasse met de naam UnitTest1. De klasse heeft een openbare methode genaamd TestMethod1 (). Voordat de methode TestMethod1 () wordt geïmplementeerd, wordt het kenmerk [TestMethod] geplaatst. Dit betekent dat u de code moet invoeren die de functies van het MinApp-project in de body van de methode zal testen.
In de klas kunt u een willekeurig aantal methoden invoeren om verschillende functies uit verschillende modules te testen. Het belangrijkste is dat deze methoden zijn gemarkeerd met het kenmerk [TestMethod].
4.4. Wijzigingen in de tekst van de UnitTest1-module aanbrengen. De naam van de testmethode wijzigen
U kunt de namen van methoden wijzigen en nieuwe methoden toevoegen die zijn gemarkeerd met het kenmerk [TestMethod] in de module UnitTest1.cs. Daarom moet u in de tekst van de UnitTest1.cs-module de methode TestMethod1 () wijzigen in TestMin ().
Nadat de wijzigingen zijn aangebracht, is de afgekorte tekst van de module van het bestand UnitTest1.cs:
systeem gebruiken; met behulp van System.Text; met behulp van System.Collections.Generic; met behulp van System.Linq; met behulp van Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Samenvatting beschrijving voor UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {... [TestMethod] openbare inhoud TestMin () {// // TODO: Test toevoegen logica hier //}}}
4.5. Het MinApp-project verbinden met het TestMinApp-project
Om toegang te krijgen tot de Min () -functie (MinApp-project) van het TestMinApp-project, moet u de naamruimte verbinden waarin deze functie zich bevindt.
Om dit te doen, moet u om te beginnen het contextmenu voor het TestMinApp-project oproepen. Vervolgens moet u in het contextmenu de opdracht "Referentie toevoegen ..." (Afbeelding 5) aanroepen.
Fig. 5. Team "Referencse toevoegen ..."
Als gevolg hiervan wordt het venster Add Reference geopend, waarin u het MinApp-project moet selecteren.
Fig. 6. Venster "Referentie toevoegen". Verbinden van het project MinApp
Na de voltooide acties zijn de MinApp-projectfuncties beschikbaar voor gebruik in het TestMinApp-project.
Fig. 7. Tabblad Verwijzingen met aangesloten MinApp-project
4.6. Wijzigingen aanbrengen in de tekst van de module UnitTest1.cs
4.6.1. De MinApp-naamruimte toevoegen aan de module UnitTest1.cs
In deze stap, in de module UnitTest1.cs, moet u de MinApp-naamruimte toevoegen met behulp van de instructie using:
systeem gebruiken; met behulp van System.Text; met behulp van System.Collections.Generic; met behulp van System.Linq; met behulp van Microsoft.VisualStudio.TestTools.UnitTesting; gebruikmakend van MinApp; naamruimte TestMinApp {...}
4.6.2. TestMin () methode tekst
Voer in de tekst van de methode TestMin () de volgende code in:
... [TestMethod] public void TestMin () {// // TODO: Testlogica hier toevoegen // int min; min = Programma .Min (3, 4, 5); Assert .AreEqual (2, min); } ...
4.7. UnitTest1.cs module tekst
De tekst van de gehele UnitTest1.cs-module is als volgt:
systeem gebruiken; met behulp van System.Text; met behulp van System.Collections.Generic; met behulp van System.Linq; met behulp van Microsoft.VisualStudio.TestTools.UnitTesting; gebruikmakend van MinApp; namespace TestMinApp {/// <summary> /// Samenvatting beschrijving voor UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {public UnitTest1 () {// // TODO: Constructorlogica hier toevoegen //} private TestContext testContextInstance; /// <summary> /// Hiermee wordt de testcontext opgehaald of ingesteld. /// </ summary> openbare TestContext TestContext {krijg {return testContextInstance; } set {testContextInstance = waarde; }} #region Aanvullende testattributen // u kunt uw tests gebruiken // // Gebruik ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Gebruik ClassCleanup om code uit te voeren nadat alle tests in een klasse zijn uitgevoerd // [ClassCleanup ()] // openbare static void MyClassCleanup () {} // // Use TestInitialize om de code uit te voeren voordat elke test wordt uitgevoerd // [TestInitialize ()] // public void MyTestInitialize () {} // // Use TestCleanup ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: Testlogica hier toevoegen // int min; min = Programma .Min (3, 4, 5); Assert .AreEqual (2, min); }}}
5. Voer de test uit en controleer het testresultaat
In Microsoft Visual Studio 2010 wordt een speciaal menu met opdrachten met de naam Test geïmplementeerd voor het werken met unit-tests.
Selecteer een van de opdrachten om een uitvoeringstest uit te voeren.
Test -> Uitvoeren -> Tests in huidige contextof
Test -> Uitvoeren -> Alle testen in oplossing
zoals weergegeven in figuur 8.
Fig. 8. Roep de starttestopdracht op en bekijk het resultaat.
Na het uitvoeren van de test, kan het resultaat worden bekeken onderaan het venster Testresultaten. Zoals te zien is in de figuur, is de test niet geslaagd. Dit is logisch, omdat we in de Assert.AreEqual () -functie de nummers 2 en 3 vergelijken, die verschillend zijn. Hier wordt nummer 2 speciaal ingevoerd in plaats van 3.
Als u in plaats van nummer 2 het juiste antwoord invoert - nummer 3 (minimum tussen 3, 4, 5), dan zal de test worden doorstaan (Figuur 9). In dit geval is de tekst van de TestMin () -methode als volgt:
... [TestMethod] public void TestMin () {// // TODO: Testlogica hier toevoegen // int min; min = Programma .Min (3, 4, 5); Assert .AreEqual (3, min); } ...
Het resultatenvenster wordt getoond in Figuur 9.
Fig. 9. Testresultaat voor de case, als u het juiste antwoord invoert
Nu kunnen we concluderen dat de functie Min () voor deze case correct werkt.
6. Het resultaat. Interactie tussen projecten
In dit artikel worden twee projecten in de oplossing gevormd. Eén MinApp-project bevat de Min () -functie die u wilt testen. Het tweede project, TestMinApp, bevat testmethoden.
In Microsoft Visual Studio 2010 wordt elk project gestart met behulp van verschillende menuopdrachten. Het MinApp-project wordt dus op de standaardmanier gestart vanuit het menu Uitvoeren. En het TestMinApp-project wordt gestart vanuit het speciale testmenu.