In diesem Thema wird der schrittweise Prozess zum Erstellen des einfachsten Komponententests in Microsoft Visual Studio 2010 (C #) für Konsolenanwendungen beschrieben. Anhand dieses Beispiels können Sie lernen, wie Sie Ihre eigenen Komponententests erstellen. Das Beispiel zeigt auch, wie die Assert-Klasse zum Testen verwendet wird.

Inhalt

  • Aufgabe
  • Anleitung
    • 1. Erstellen Sie eine Anwendung mit der Konsolenanwendungsvorlage
    • 2. Vorbereitung des Textes des Programms.cs-Modul
      • 2.1. Hinzufügen der Funktion Min()
      • 2.2. Machen Sie die Programmklasse öffentlich
    • 3. Auflistung des zu testenden Programms
    • 4. Erstellen eines Tests
      • 4.1. Hinzufügen eines neuen Projekts zur Lösung
      • 4.2. Struktur der Lösung
      • 4.3. Programmcode von „UnitTest1.cs“-Datei. Attribute und
      • 4.4. Änderungen im Text UnitTest1.cs-Modul. Ändern des Namens der Testmethode
      • 4.5. Verbinden des MinApp-Projekts mit dem TestMinApp-Projekt
      • 4.6. Änderung von UnitTest1.cs Modultext
        • 4.6.1. Hinzufügen des MinApp-Namespace zu UnitTest1.cs
        • 4.6.2. Text der TestMin() -Methode
      • 4.7. Der Text von UnitTest1.cs-Modul
    • 5. Führen Sie den Test aus und überprüfen Sie das Testergebnis
    • 6. Ergebnis. Interaktion zwischen Projekten
  • Verwandte Themen

Andere Websites durchsuchen:

Aufgabe

Entwickeln Sie für eine Anwendung vom Typ Konsolenanwendung einen Komponententest, der die Funktion Min() testet. Legen Sie für die Funktion Min() die Testmethode TestMin() fest. Testen Sie das Ergebnis der Funktionen.

Anweisungen

1. Erstellen Sie eine Anwendung mit der Konsolenanwendungsvorlage

Führen Sie MS Visual Studio 2010 aus. Um ein Projekt mit der Konsolenanwendungsvorlage zu erstellen, müssen Sie die folgende Befehlssequenz aufrufen:

File -> New -> Project...

Daraufhin wird das Fenster Neues Projekt geöffnet. Wählen Sie im Fenster die Vorlage „Konsolenanwendung“ aus, wie in Abbildung 1 gezeigt. Die Vorlage wird auf der Registerkarte Visual C # ausgewählt.

C#. Windows-Formulare. Das Fenster "Neues Projekt". Auswahl der "Konsolenanwendung"

Abbildung 1. Das Fenster „Neues Projekt“. Auswahl der „Konsolenanwendung“

2. Vorbereitung des Textes des Programms.cs-Modul

2.1. Hinzufügen der Funktion Min()

Im Hauptteil der Programmklasse müssen Sie den Text der Funktion Min() hinzufügen. Die Funktion wird als public und static deklariert. Der Text der Funktion Min()

C#. Das MS Visual Studio-Fenster, das Modul "Programm.cs"

Abbildung 2. Das MS Visual Studio-Fenster, das Modul „Programm.cs“

2.2. Machen Sie die Programmklasse public

Um auf die Funktion Min() der Programmklasse zuzugreifen, müssen Sie diese Klasse öffentlich machen. Dazu müssen Sie vor der Klassendeklaration das Schlüsselwort public festlegen.

...namespace MinApp{ public class Program { // методы класса // ... }}...

Danach ist das getestete Programm fertig.

3. Auflistung des zu testenden Programms

Im Moment lautet der Programmcode des zu testenden Programms wie folgt:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MinApp{ public class Program { public static int Min(int a, int b, int c) { int min = a; if (min > b) min = b; if (min > c) min = c; return min; } static void Main(string args) { Console.WriteLine("Demo of Unit-testing in C#."); } }}

Da dieses Programm von einem anderen Testmodul aus getestet wird, müssen Sie in der Funktion Main () nichts anderes eingeben. Da Sie entsprechend der Bedingung der Aufgabe die Funktionsweise der Funktion Min() testen müssen. Und dies wird bereits vom Testmodul aus erfolgen. Im Moment ist unser Programm zum Testen bereit.

4. Test erstellen

Der Test wird von einem separaten Projekt in der Lösung erstellt. Das Programm, das Sie testen, weiß davon nichts. Das zu testende 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 wird ein neues Projekt mit dem Befehl

File->Add->New Project...

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

C#. Windows Forms-Anwendung. Das Fenster zum Erstellen eines Projekts vom Typ Test Project

Abbildung 3. Das Fenster zum Erstellen eines Projekts vom Typ Testprojekt

Im Fenster müssen Sie die Vorlagengruppe auswählen

Visual C# -> Test

Aus den angezeigten Vorlagen wird die Projektvorlage „Testprojekt“ ausgewählt. Das Feld „Name“ gibt den Namen des Projekts an, das unser Programm testen soll. Sie müssen beispielsweise TestMinApp festlegen. Das Projekt befindet sich in einem separaten Ordner „E:\Test\MinApp“.

C#. Die "UnitTest1.cs"-Datei. Das Projektmappen-Explorer-Fenster mit den Projekten TestMinApp und MinApp zeigte

Abbildung 4 an. Die „UnitTest1.cs“-Datei. Das Solution Explorer-Fenster mit den angezeigten Projekten TestMinApp und MinApp

4.2. Struktur der Lösung

Wie Sie in Abbildung 4 sehen können, zeigt der Projektmappen-Explorer die Struktur der Projektmappenelemente an, die zwei Projekte enthält:

  • das MinApp-Projekt. Dies ist ein Projekt, das mit der Vorlage „Konsolenanwendung“ mit der zu testenden Funktion Min () erstellt wurde.
  • das TestMinApp-Projekt. Dieses Projekt wurde entwickelt, um die Funktionen des MinApp-Projekts zu testen. Der Programmcode, der die Funktion Min() testet, wird der Projektdatei UnitTest1 des TestMinApp-Projekts hinzugefügt.

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

4.3. Programmcode von „UnitTest1.cs“-Datei. Attribute und

Im TestMinApp-Projekt UnitTest1.cs Testdatei ist von primärem Interesse. Diese Datei enthält Methoden zum Testen der Funktionen des MinApp-Projekts. Das TestMinApp-Projekt kann eine beliebige Anzahl von Dateien enthalten, die Tests enthalten (z. B. UnitTest2.cs, UnitTest3.cs, etc.).

Programmcode von „UnitTest1.cs“ -Datei, die von MS Visual Studio 2010 generiert wurde, lautet wie folgt:

using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMethod1() { // // TODO: Add test logic here // } }}

Wie Sie dem obigen Code entnehmen können, enthält die Datei eine Klasse namens UnitTest1 . Die Klasse beinhaltet eine öffentliche Methode namens TestMethod1().Vor der Implementierung der TestMethod1() -Methode wird das Attribut platziert. Dies bedeutet, dass im Hauptteil der Methode Code geschrieben werden muss, der die Funktionen des MinApp-Projekts testet.

In der Klasse können Sie eine beliebige Anzahl von Methoden eingeben, die verschiedene Funktionen aus verschiedenen Modulen testen. Die Hauptsache ist, dass diese Methoden vom Attribut bemerkt werden .

4.4. Änderungen im Text UnitTest1.cs-Modul. Ändern des Namens der Testmethode

Sie können die Methodennamen ändern und neue Methoden hinzufügen, die mit dem Attribut in der UnitTest1 markiert sind.cs-Modul. In diesem Sinne in UnitTest1.daher sollte die Methode TestMethod1() in TestMin() umbenannt werden.

Nachdem die Änderungen vorgenommen wurden, wird der abgekürzte Text von UnitTest1.cs-Datei-Modul wird wie folgt aussehen:

using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { ... public void TestMin() { // // TODO: Add test logic here // } }}

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

Um über das TestMinApp-Projekt auf die Funktion Min() (das MinApp-Projekt) zuzugreifen, müssen Sie den Namespace einbinden, in dem diese Funktion deklariert ist.

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

C#. Unit-Test erstellen. Die "Add Referencse..." befehl

Abbildung 5. Befehl

Daraufhin wird das Fenster „Referenz hinzufügen“ geöffnet, in dem Sie das MinApp-Projekt auswählen.

C#. Unit-Test Erstellen des Fensters "Referenz hinzufügen". MinApp-Projektverbindung

Abbildung 6. Das Fenster „Referenz hinzufügen“. MinApp-Projektverbindung

Nach den durchgeführten Aktionen stehen die MinApp-Projektfunktionen zur Verwendung im TestMinApp-Projekt zur Verfügung.

C#. Windows Forms-Anwendung. Die Registerkarte "Referenzen" mit dem verbundenen MinApp-Projekt

Abbildung 7. Die Registerkarte „Referenzen“ mit dem verbundenen MinApp-Projekt

4.6. Änderung von UnitTest1.cs Modultext
4.6.1. Hinzufügen des MinApp-Namespace zu UnitTest1.cs

In diesem Schritt müssen Sie den MinApp-Namespace zu UnitTest1 hinzufügen.cs mit der ‚using‘-Direktive:

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

4.6.2. Text der TestMin() -Methode

Im Text der TestMin() -Methode müssen Sie den folgenden Code eingeben:

...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min);}...

4.7. Der Text von UnitTest1.cs modul

Der Text aller UnitTest1.cs-Modul ist wie folgt:

using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMin() { // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min); } }}

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

In Microsoft Visual Studio 2010 Für Komponententests ist ein spezielles Menü ‚Test‘ implementiert.

Um den Test auszuführen, müssen Sie einen der Befehle

Test -> Run -> Tests in Current Context

oder

Test -> Run -> All Tests in Solution

auswählen, wie in Abbildung 8 dargestellt.

C#. Unit-Test erstellen. Aufrufen des Befehls test und Anzeigen des Ergebnisses

Abbildung 8. Aufrufen des Befehls test und Anzeigen des Ergebnisses

Nach dem Start des Tests kann das Ergebnis links im Fenster Test Explorer angezeigt werden. Wie aus der Abbildung 8 ersichtlich, wird der Test nicht bestanden. Dies ist logisch, weil in der Funktion Assert.AreEqual() wir vergleichen die Zahlen 2 und 3, die unterschiedlich sind. Hier wird die Nummer 2 anstelle der Nummer 3 speziell eingegeben.

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

...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(3, min);}...

Das Ergebnisfenster ist in Abbildung 9 dargestellt.

C#. Unit-Test erstellen. Testergebnis für den Fall, wenn Sie die richtige Antwort eingeben

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

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

6. Ergebnis. Interaktion zwischen Projekten

In dieser Aufgabe umfasst die Lösung zwei Projekte. Ein MinApp-Projekt enthält die zu testende Min() -Funktion. Das zweite TestMinApp-Projekt enthält Testmethoden. In Microsoft Visual Studio 2010 wird jedes der Projekte mit verschiedenen Menübefehlen ausgeführt. Das MinApp-Projekt wird also standardmäßig über das Menü Ausführen ausgeführt. Und das TestMinApp-Projekt wird über ein spezielles ‚Test‘-Menü gestartet.

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht.