C #. Beispiel für das Erstellen eines Komponententests in MS Visual Studio

  1. Der Inhalt
  2. Ausführung
  3. 2. Vorbereitung des Program.cs-Modultextes
  4. 2.2. Machen Sie die Programmklasse öffentlich
  5. 3. Auflistung des getesteten Programms
  6. 4. Test erstellen
  7. 4.1. Hinzufügen eines neuen Projekts zur Lösung
  8. 4.2. Lösungsstruktur
  9. 4.3. Der Text der Datei "UnitTest1.cs". Attribute [TestMethod] und [TestClass]
  10. 4.4. Änderungen am Text des Moduls UnitTest1 vornehmen. Ändern des Namens der Testmethode
  11. 4.5. Verbinden des MinApp-Projekts mit dem TestMinApp-Projekt
  12. 4.6. Änderungen am Text des Moduls UnitTest1.cs vornehmen
  13. 4.6.2. TestMin () - Methodentext
  14. 4.7. UnitTest1.cs-Modultext
  15. 5. Führen Sie den Test durch und überprüfen Sie das Testergebnis
  16. 6. Das Ergebnis. Interaktion zwischen Projekten

In diesem Thema wird die schrittweise Erstellung eines einfachen Komponententests in Microsoft Visual Studio 2010 (C #) für eine Anwendung wie die Konsolenanwendung beschrieben. Anhand dieses Beispiels erfahren Sie, wie Sie Ihre eigenen Unit-Tests erstellen. Das Beispiel zeigt auch die Verwendung der Assert-Klasse zum Testen der Funktionsweise.

Der Inhalt

Der Zustand des Problems

Entwickeln Sie für eine Anwendung wie die Konsolenanwendung einen Unit-Test, mit dem die Funktion Min () getestet wird, mit der das maximale Element aus drei Zahlen bestimmt wird.

Setzen Sie für die Funktion Min () die Testmethode auf TestMin (). Überprüfen Sie die Funktion.

Ausführung

1. Erstellen Sie eine Anwendung mit der Konsolenanwendungsvorlage

Führen Sie MS Visual Studio 2010 zur Ausführung aus. Um ein Projekt mithilfe des Konsolenanwendungsmusters zu erstellen, sollte die folgende Befehlszeile aufgerufen werden:

Datei -> Neu -> Projekt ...

Infolgedessen wird das Fenster Neues Projekt geöffnet. Wählen Sie im Fenster die Konsolenanwendungsvorlage aus, wie in Abbildung 1 dargestellt. Die Vorlage wird auf der Registerkarte Visual C # ausgewählt.

Visual C # -> Konsolenanwendung

Visual C # -> Konsolenanwendung

Abb. 1. Fenster "Neues Projekt". Auswählen einer Anwendung des Konsolenanwendungstyps

2. Vorbereitung des Program.cs-Modultextes

2.1. Fügen Sie dem Modultext die Funktion Min () hinzu

Fügen Sie im Hauptteil der Program-Klasse den Text der Min () -Funktion hinzu.

Die Funktion wird als public (statisch) und public deklariert. Min () Funktionstext

public static int Min (int a, int b, int c) {int min = a; wenn (min> b) min = b; wenn (min> c) min = c; return min; }

public static int Min (int a, int b, int c) {int min = a;  wenn (min> b) min = b;  wenn (min> c) min = c;  return min;  }

Abb. 2. Ansicht des MS Visual Studio 2010-Fensters, Modul „Program.cs“

2.2. Machen Sie die Programmklasse öffentlich

Um auf die Min () - Funktion der Program-Klasse zugreifen zu können, müssen Sie diese Klasse öffentlich verfügbar machen. Dazu müssen Sie vor dem Deklarieren einer Klasse das öffentliche Schlüsselwort definieren.

... Namespace MinApp {public class Program {// Klassenmethoden // ...}} ...

Danach ist das Testprogramm fertig.

3. Auflistung des getesteten Programms

Im Moment ist die Auflistung des getesteten Programms wie folgt:

using System; using System.Collections.Generic; using System.Linq; using System.Text; Namespace MinApp {public class Program {public statisch int Min (int a, int b, int c) {int min = a; wenn (min> b) min = b; wenn (min> c) min = c; return min; } static void Main (string [] args) {Console.WriteLine ("Demo von Unit-Tests in C #."); }}}

Da dieses Programm von einem anderen Testmodul aus getestet wird, muss in der Funktion Main () nichts anderes eingegeben werden. Weil Sie in Übereinstimmung mit der Bedingung des Problems die Funktion Min () testen müssen. Und dies wird vom Testmodul aus durchgeführt. Derzeit ist unser Programm zum Testen bereit.

4. Test erstellen

Der Test wird von einem separaten Projekt (Projekt) in der Lösung (Lösung) erstellt. Das getestete Programm weiß nichts davon. Das zu testende Programm (das Testprogramm) ruft die Funktionen des zu testenden Programms auf. In unserem Fall ruft das Testprogramm die Funktion auf

int Min (int, int, int);

4.1. Hinzufügen eines neuen Projekts zur Lösung

Für diese Lösung (Solution) müssen Sie mit dem Befehl ein neues Projekt hinzufügen

Datei-> Hinzufügen-> Neues Projekt ...

Das Fenster zum Erstellen eines neuen Projekts ist in Abbildung 3 dargestellt.

Abb. 3. Fenster zum Erstellen eines Projekts vom Typ Testprojekt

Eine Gruppe von Visual C # -Vorlagen -> Test wird im Fenster ausgewählt. Aus den angezeigten Vorlagen wird die Projektvorlage „Test Project“ ausgewählt. Im Feld "Name" wird der Name des Projekts angezeigt, das unser Programm testen soll. Sie müssen beispielsweise TestMinApp festlegen. Das Projekt befindet sich in einem separaten Ordner "E: \ Test \ MinApp".

Das Projekt befindet sich in einem separaten Ordner E: \ Test \ MinApp

Abb. 4. Der Text des Moduls UnitTest1.cs. Fenster des Dienstprogramms "Projektmappen-Explorer" mit angezeigten TestMinApp- und MinApp-Projekten

4.2. Lösungsstruktur

Wie aus Abbildung 4 ersichtlich, zeigt das Dienstprogramm Solution Explorer die Struktur Solution Items an, die zwei Projekte enthält:

  • Projekt MinApp. Dies ist ein Projekt, das mithilfe der Konsolenanwendungsvorlage mit der Min () - Funktion erstellt wurde, gegen die Sie protestieren möchten.
  • TestMinApp-Projekt. Dieses Projekt dient zum Testen der Funktionen des MinApp-Projekts. Der Programmcode, der die Funktion Min () testet, wird in die UnitTest1-Projektdatei des TestMinApp-Projekts eingegeben.

Beide Projekte können unabhängig voneinander durchgeführt werden.

4.3. Der Text der Datei "UnitTest1.cs". Attribute [TestMethod] und [TestClass]

Im TestMinApp-Projekt ist vor allem die Testdatei UnitTest1.cs von Interesse. Diese Datei enthält Methoden, mit denen die Funktionen des MinApp-Projekts getestet werden. Das TestMinApp-Projekt kann eine beliebige Anzahl von Dateien enthalten, die Tests enthalten (z. B. UnitTest2.cs, UnitTest3.cs usw.).

Die Liste der UnitTest1.cs-Datei, die von MS Visual Studio 2010 generiert wird, lautet wie folgt:

using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; Namespace TestMinApp {/// <summary> /// Zusammenfassungsbeschreibung für UnitTest1 /// </ summary> [TestClass] öffentliche Klasse UnitTest1 {public UnitTest1 () {// // TODO: Hier Konstruktorlogik hinzufügen //} privater TestContext testContextInstance; /// <summary> /// Ruft den Testkontext ab oder legt diesen fest. /// </ summary> public TestContext TestContext {get {return testContextInstance; } set {testContextInstance = value; }} #region Zusätzliche Testattribute // Sie können Ihre Tests verwenden // // ClassInitialize verwenden // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Verwenden Sie ClassCleanup, um Code auszuführen, nachdem alle Tests in einer Klasse ausgeführt wurden. // [ClassCleanup ()] // public static void MyClassCleanup () {} // // Verwenden Sie TestInitialize Ausführen des Codes vor jedem Test // [TestInitialize ()] // public void MyTestInitialize () {} // // Use TestCleanup ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: Testlogik hier einfügen //}}}

Wie aus dem obigen Code hervorgeht, enthält die Datei eine Klasse mit dem Namen UnitTest1. Die Klasse verfügt über eine öffentliche Methode namens TestMethod1 (). Vor der Implementierung der TestMethod1 () -Methode wird das Attribut [TestMethod] platziert. Dies bedeutet, dass Sie den Code eingeben müssen, der die Funktionen des MinApp-Projekts im Hauptteil der Methode testet.

In der Klasse können Sie eine beliebige Anzahl von Methoden eingeben, mit denen verschiedene Funktionen von verschiedenen Modulen getestet werden. Hauptsache, diese Methoden sind mit dem Attribut [TestMethod] gekennzeichnet.

4.4. Änderungen am Text des Moduls UnitTest1 vornehmen. Ändern des Namens der Testmethode

Sie können die Namen von Methoden ändern und neue Methoden hinzufügen, die im Modul UnitTest1.cs mit dem Attribut [TestMethod] gekennzeichnet sind. Aus diesem Grund müssen Sie im Text des Moduls UnitTest1.cs die Methode TestMethod1 () in TestMin () umbenennen.

Nach den vorgenommenen Änderungen lautet der Kurztext des Moduls in der Datei UnitTest1.cs wie folgt:

using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; Namespace TestMinApp {/// <summary> /// Zusammenfassungsbeschreibung für UnitTest1 /// </ summary> Öffentliche Klasse [TestClass] UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Test hinzufügen Logik hier //}}}

4.5. Verbinden des MinApp-Projekts mit dem TestMinApp-Projekt

Um vom TestMinApp-Projekt aus auf die Funktion Min () (MinApp-Projekt) zugreifen zu können, müssen Sie den Namespace verbinden, in dem sich diese Funktion befindet.

Dazu müssen Sie zunächst das Kontextmenü für das TestMinApp-Projekt aufrufen. Anschließend müssen Sie im Kontextmenü den Befehl „Verweis hinzufügen ...“ aufrufen (Abbildung 5).

“ aufrufen (Abbildung 5)

Abb. 5. Team "Verweis hinzufügen ..."

Als Ergebnis wird das Fenster Verweis hinzufügen geöffnet, in dem Sie das MinApp-Projekt auswählen müssen.

Abb. 6. Fenster "Verweis hinzufügen". Anschließen des MinApp-Projekts

Nach Abschluss der Aktionen stehen die MinApp-Projektfunktionen im TestMinApp-Projekt zur Verfügung.

Nach Abschluss der Aktionen stehen die MinApp-Projektfunktionen im TestMinApp-Projekt zur Verfügung

Abb. 7. Registerkarte "Referenzen" mit verbundenem MinApp-Projekt

4.6. Änderungen am Text des Moduls UnitTest1.cs vornehmen
4.6.1. Hinzufügen des MinApp-Namespace zum UnitTest1.cs-Modul

In diesem Schritt müssen Sie im UnitTest1.cs-Modul den MinApp-Namespace mithilfe der using-Direktive hinzufügen:

using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using MinApp; Namespace TestMinApp {...}

4.6.2. TestMin () - Methodentext

Geben Sie im Text der TestMin () -Methode den folgenden Code ein:

... [TestMethod] public void TestMin () {// // TODO: Testlogik hier einfügen // int min; min = Programm .Min (3, 4, 5); Assert .AreEqual (2, min); } ...

4.7. UnitTest1.cs-Modultext

Der Text des gesamten Moduls UnitTest1.cs lautet wie folgt:

using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using MinApp; Namespace TestMinApp {/// <summary> /// Zusammenfassungsbeschreibung für UnitTest1 /// </ summary> [TestClass] öffentliche Klasse UnitTest1 {public UnitTest1 () {// // TODO: Hier Konstruktorlogik hinzufügen //} privater TestContext testContextInstance; /// <summary> /// Ruft den Testkontext ab oder legt diesen fest. /// </ summary> public TestContext TestContext {get {return testContextInstance; } set {testContextInstance = value; }} #region Zusätzliche Testattribute // Sie können Ihre Tests verwenden // // ClassInitialize verwenden // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Verwenden Sie ClassCleanup, um Code auszuführen, nachdem alle Tests in einer Klasse ausgeführt wurden. // [ClassCleanup ()] // public static void MyClassCleanup () {} // // Verwenden Sie TestInitialize Ausführen des Codes vor jedem Test // [TestInitialize ()] // public void MyTestInitialize () {} // // Use TestCleanup ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: Testlogik hier einfügen // int min; min = Programm .Min (3, 4, 5); Assert .AreEqual (2, min); }}}

5. Führen Sie den Test durch und überprüfen Sie das Testergebnis

In Microsoft Visual Studio 2010 ist ein spezielles Menü mit Befehlen namens Test für die Arbeit mit Komponententests implementiert.

Wählen Sie einen der Befehle aus, um einen Ausführungstest auszuführen.

Test -> Ausführen -> Tests im aktuellen Kontext

oder

Test -> Ausführen -> Alle Tests in Lösung

wie in Abbildung 8 gezeigt.

Abb. 8. Rufen Sie den Befehl start test auf und zeigen Sie das Ergebnis an.

Nach dem Ausführen des Tests kann das Ergebnis unten im Fenster Testergebnisse angezeigt werden. Wie aus der Abbildung ersichtlich, ist der Test nicht bestanden. Dies ist logisch, da in der Funktion Assert.AreEqual () die Zahlen 2 und 3 verglichen werden, die unterschiedlich sind. Hier wird die Nummer 2 anstelle von 3 speziell eingeführt.

Wenn Sie anstelle von Nummer 2 die richtige Antwort eingeben - Nummer 3 (mindestens 3, 4, 5), ist der Test bestanden (Abbildung 9). In diesem Fall lautet der Text der TestMin () -Methode wie folgt:

... [TestMethod] public void TestMin () {// // TODO: Testlogik hier einfügen // int min; min = Programm .Min (3, 4, 5); Assert .AreEqual (3, min); } ...

Das Ergebnisfenster ist in Abbildung 9 dargestellt.

Abb. 9. Testergebnis für den Fall, wenn Sie die richtige Antwort eingeben

Jetzt können wir schließen, dass die Min () - Funktion für diesen Fall korrekt funktioniert.

6. Das Ergebnis. Interaktion zwischen Projekten

In diesem Artikel werden zwei Projekte in der Lösung gebildet. Ein MinApp-Projekt enthält die Min () -Funktion, die Sie testen möchten. Das zweite Projekt, TestMinApp, enthält Testmethoden.

In Microsoft Visual Studio 2010 wird jedes Projekt mit unterschiedlichen Menübefehlen gestartet. Das MinApp-Projekt wird also auf die übliche Weise über das Menü Ausführen gestartet. Und das TestMinApp-Projekt wird über das spezielle Testmenü gestartet.

Verwandte Themen