C #. Voorbeeld van het maken van een eenheidscontrole in MS Visual Studio

  1. De inhoud
  2. executie
  3. 2. Voorbereiding van de programmeertekst van Program.cs
  4. 2.2. Maak de programma-klasse openbaar
  5. 3. Vermelding van het geteste programma
  6. 4. Een test maken
  7. 4.1. Een nieuw project aan de oplossing toevoegen
  8. 4.2. Oplossingsstructuur
  9. 4.3. De tekst van het bestand "UnitTest1.cs". Attributen [TestMethode] en [Testklasse]
  10. 4.4. Wijzigingen in de tekst van de UnitTest1-module aanbrengen. De naam van de testmethode wijzigen
  11. 4.5. Het MinApp-project verbinden met het TestMinApp-project
  12. 4.6. Wijzigingen aanbrengen in de tekst van de module UnitTest1.cs
  13. 4.6.2. TestMin () methode tekst
  14. 4.7. UnitTest1.cs module tekst
  15. 5. Voer de test uit en controleer het testresultaat
  16. 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

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

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

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.

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

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 context

of

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.

Verwante onderwerpen