Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Tutorial führt Sie interaktiv Schritt für Schritt durch das Erstellen einer Beispielprojektmappe, um die Konzepte von Komponententests zu erlernen.
In diesem Artikel wird ein .NET Core-Projekt getestet. Wenn Sie ein ASP.NET Core-Projekt testen, finden Sie weitere Informationen unter Integrationstests in ASP.NET Core.
Prerequisites
- .NET 10 SDK oder höhere Versionen.
- Ein Text-Editor oder Code-Editor Ihrer Wahl.
TUnit basiert vollständig auf Microsoft. Testing.Platform (MTP) und unterstützt VSTest nicht. In diesem Lernprogramm wird der MTP-Modus von dotnet test verwendet, der das .NET 10 SDK erfordert.
Erstellen des Quellprojekts
Öffnen eines Shell-Fensters. Erstellen Sie ein Verzeichnis namens unit-testing-vb-tunit , um die Lösung zu speichern. Führen Sie in diesem neuen Verzeichnis den folgenden Befehl aus, um eine neue Lösungsdatei für die Klassenbibliothek und das Testprojekt zu erstellen:
dotnet new sln
Erstellen Sie als Nächstes ein PrimeService-Verzeichnis . Die folgende Gliederung zeigt die Dateistruktur bisher:
/unit-testing-vb-tunit
unit-testing-vb-tunit.slnx
/PrimeService
Stellen Sie PrimeService zum aktuellen Verzeichnis, und führen Sie den folgenden Befehl aus, um das Quellprojekt zu erstellen:
dotnet new classlib -lang VB
Benennen Sie Class1.vb in PrimeService.vb um. Sie erstellen eine fehlerhafte Implementierung der Klasse PrimeService.
Namespace Prime.Services
Public Class PrimeService
Public Function IsPrime(candidate As Integer) As Boolean
Throw New NotImplementedException("Please create a test first.")
End Function
End Class
End Namespace
Ändern Sie das Verzeichnis wieder in das Verzeichnis unit-testing-vb-tunit. Führen Sie den folgenden Befehl aus, um das Klassenbibliotheksprojekt zur Projektmappe hinzuzufügen:
dotnet sln add ./PrimeService/PrimeService.vbproj
Erstellen des Testprojekts
Erstellen Sie als Nächstes das Verzeichnis PrimeService.Tests. Die folgende Gliederung zeigt die Verzeichnisstruktur:
/unit-testing-vb-tunit
unit-testing-vb-tunit.slnx
/PrimeService
Source Files
PrimeService.vbproj
/PrimeService.Tests
Die TUnit-Projektvorlagen sind nicht im .NET SDK enthalten. Installieren Sie sie mit dem folgenden Befehl:
dotnet new install TUnit.Templates
Erstellen Sie das Verzeichnis "PrimeService.Tests " als aktuelles Verzeichnis, und erstellen Sie ein neues Projekt mit dem folgenden Befehl:
dotnet new TUnit -lang VB
Note
Bei Kurznamen von Vorlagen wird die Groß-/Kleinschreibung beachtet. Verwenden Sie TUnit, nicht tunit.
Der Befehl dotnet new erstellt ein Testprojekt, das TUnit als Testbibliothek verwendet. Die generierte PrimeService.Tests.vbproj-Datei ist ein ausführbares Projekt, das auf das TUnit Paket verweist, das das Testframework, die Assertionsbibliothek und den MTP-Testläufer enthält, sodass das Projekt keine anderen Testpakete benötigt.
Die Vorlage fügt außerdem Beispieltests hinzu. Löschen Sie alle .vb-Dateien und das Data-Verzeichnis aus dem Verzeichnis PrimeService.Tests, da dieses Lernprogramm sie durch eigene Tests ersetzt.
Fügen Sie nun die PrimeService Klassenbibliothek als weitere Abhängigkeit zum Projekt hinzu. Verwenden Sie den Befehl dotnet reference add:
dotnet reference add ../PrimeService/PrimeService.vbproj
Sie haben das folgende endgültige Lösungslayout:
/unit-testing-vb-tunit
unit-testing-vb-tunit.slnx
/PrimeService
Source Files
PrimeService.vbproj
/PrimeService.Tests
Test Source Files
PrimeService.Tests.vbproj
Führen Sie den folgenden Befehl im Verzeichnis "unit-testing-vb-tunit " aus:
dotnet sln add ./PrimeService.Tests/PrimeService.Tests.vbproj
Konfigurieren des MTP-Modus von dotnet test
Da TUnit VSTest nicht unterstützt, muss dotnet test im MTP-Modus ausgeführt werden. Erstellen Sie im Verzeichnis unit-testing-vb-tunit eine global.json-Datei mit folgendem Inhalt:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Weitere Informationen finden Sie im MTP-Modus des Dotnet-Tests.
Erstellen des ersten Tests
Du schreibst einen fehlgeschlagenen Test, machst ihn erfolgreich und wiederholst dann den Vorgang. Erstellen Sie im Verzeichnis PrimeService.Tests eine PrimeService_IsPrimeShould.vb-Datei mit dem folgenden Code:
Imports TUnit.Assertions
Imports TUnit.Assertions.Extensions
Imports TUnit.Core
Namespace PrimeService.Tests
Public Class PrimeService_IsPrimeShould
Private ReadOnly _primeService As Prime.Services.PrimeService = New Prime.Services.PrimeService()
<Test>
Public Async Function IsPrime_InputIs1_ReturnFalse() As Task
Dim result As Boolean = _primeService.IsPrime(1)
Await Assert.That(result).IsFalse()
End Function
End Class
End Namespace
Das attribut <Test> bezeichnet eine Methode, die vom Testläufer ausgeführt wird. TUnit benötigt kein Attribut an der Klasse. TUnit-Assertionen sind asynchron, daher ist der Test ein Async Function, die ein Task zurückgibt und auf Assert.That wartet.
Visual Basic platziert den Code in jedem Projekt unter dem Stammnamespace des Projekts, daher befindet sich die PrimeService Klasse im PrimeService.Prime.Services Namespace. Der Test bezeichnet es als Prime.Services.PrimeService, weil innerhalb der Namespaces des Testprojekts der Name PrimeService auf einen Namespace und nicht auf die Klasse verweist.
Führen Sie im Verzeichnis unit-testing-vb-tunitdotnet test aus, um die Tests und die Klassenbibliothek zu erstellen, und führen Sie dann die Tests aus. Das TUnit-Testprojekt enthält den Programmeinstieg, um Ihre Tests auszuführen. Mit dotnet test wird die Testanwendung mithilfe des erstellten Unit-Testprojekts gestartet.
Ihr Test schlägt fehl. Sie haben die Implementierung noch nicht erstellt. Bringen Sie diesen Test zum Bestehen, indem Sie den einfachsten funktionierenden Code in der Klasse PrimeService schreiben.
Public Function IsPrime(candidate As Integer) As Boolean
If candidate = 1 Then
Return False
End If
Throw New NotImplementedException("Please create a test first.")
End Function
Führen Sie im Verzeichnis unit-testing-vb-tunitdotnet test erneut aus. Der Befehl dotnet test führt einen Build für das PrimeService Projekt und dann für das PrimeService.Tests Projekt aus. Nachdem beide Projekte erstellt wurden, führt es diesen einzelnen Test aus. Er ist erfolgreich.
Hinzufügen weiterer Funktionen
Nachdem Sie nun einen Test bestanden haben, ist es an der Zeit, mehr zu schreiben. Es gibt einige andere einfache Fälle für Primzahlen: 0, -1. Sie können diese Fälle als neue Tests mit dem attribut <Test> hinzufügen, aber das wird schnell mühsam. TUnit stellt das <Arguments> Attribut bereit, um eine Reihe von Tests zu erstellen, die denselben Code ausführen, aber unterschiedliche Eingabeargumente haben.
Anstatt neue Tests zu erstellen, wenden Sie dieses Attribut an, um einen einzelnen datengesteuerten Test zu erstellen. Ersetzen Sie die IsPrime_InputIs1_ReturnFalse Funktion durch den folgenden Code, der mehrere Werte unter zwei testet, die niedrigste Primzahl:
<Test>
<Arguments(-1)>
<Arguments(0)>
<Arguments(1)>
Public Async Function IsPrime_ValuesLessThan2_ReturnFalse(value As Integer) As Task
Dim result As Boolean = _primeService.IsPrime(value)
Await Assert.That(result).IsFalse()
End Function
Führen Sie dotnet test aus und zwei dieser Tests schlagen fehl. Um alle Tests erfolgreich zu machen, ändern Sie die If Klausel am Anfang der IsPrime Methode in der datei PrimeService.vb :
If candidate < 2 Then
Fahren Sie fort, indem Sie weitere Tests und mehr Code in der Hauptbibliothek hinzufügen.
Sie haben eine kleine Bibliothek und eine Reihe von Unittests für diese Bibliothek erstellt. Sie haben die Lösung so strukturiert, dass das Hinzufügen neuer Pakete und Tests Teil des normalen Workflows ist. Sie haben die meiste Zeit und Mühe auf die Erreichung der Ziele der Anwendung konzentriert.