Dart-Programmierung - Unit-Test
Beim Testen von Einheiten wird jede einzelne Einheit einer Anwendung getestet. Es hilft dem Entwickler, kleine Funktionen zu testen, ohne die gesamte komplexe Anwendung auszuführen.
Der Pfeil external library Der Name "Test" bietet eine Standardmethode zum Schreiben und Ausführen von Komponententests.
Das Testen der Dart-Einheit umfasst die folgenden Schritte:
Step 1: Installing the "test" package
Um Pakete von Drittanbietern im aktuellen Projekt zu installieren, benötigen Sie die pubspec.yamlDatei. Installierentest packagesMachen Sie zuerst den folgenden Eintrag in der pubspec.yaml Datei -
dependencies:
test:
Klicken Sie nach der Eingabe mit der rechten Maustaste auf pubspec.yamlDatei und Abhängigkeiten erhalten. Es wird das installieren"test"Paket. Unten ist ein Screenshot für das gleiche in derWebStorm Editor.
Pakete können von der installiert werden command lineauch. Geben Sie Folgendes in das Terminal ein -
pub get
Step 2: Importing the "test" package
import "package:test/test.dart";
Step 3 Writing Tests
Tests werden mit der Funktion der obersten Ebene angegeben test()während test assertions werden mit dem gemacht expect()Funktion. Für die Verwendung dieser Methoden sollten sie als installiert werdenpub Abhängigkeit.
Syntax
test("Description of the test ", () {
expect(actualValue , matchingValue)
});
Das group()Funktion kann verwendet werden, um Tests zu gruppieren. Die Beschreibung jeder Gruppe wird am Anfang der Testbeschreibungen hinzugefügt.
Syntax
group("some_Group_Name", () {
test("test_name_1", () {
expect(actual, equals(exptected));
});
test("test_name_2", () {
expect(actual, equals(expected));
});
})
Beispiel 1: Ein bestehender Test
Das folgende Beispiel definiert eine Methode Add(). Diese Methode akzeptiert zwei ganzzahlige Werte und gibt eine Ganzzahl zurück, die die darstelltsum. Um dies zu testenadd() Methode -
Step 1 - Importieren Sie die test Paket wie unten angegeben.
Step 2 - Definieren Sie den Test mit dem test()Funktion. Hier dastest() Funktion verwendet die expect() Funktion zum Erzwingen einer Behauptung.
import 'package:test/test.dart';
// Import the test package
int Add(int x,int y)
// Function to be tested {
return x+y;
}
void main() {
// Define the test
test("test to check add method",(){
// Arrange
var expected = 30;
// Act
var actual = Add(10,20);
// Asset
expect(actual,expected);
});
}
Es sollte Folgendes erzeugen output - -
00:00 +0: test to check add method
00:00 +1: All tests passed!
Beispiel 2: Ein fehlgeschlagener Test
Das subtract()Die unten definierte Methode hat einen logischen Fehler. Folgendetest überprüft das gleiche.
import 'package:test/test.dart';
int Add(int x,int y){
return x+y;
}
int Sub(int x,int y){
return x-y-1;
}
void main(){
test('test to check sub',(){
var expected = 10;
// Arrange
var actual = Sub(30,20);
// Act
expect(actual,expected);
// Assert
});
test("test to check add method",(){
var expected = 30;
// Arrange
var actual = Add(10,20);
// Act
expect(actual,expected);
// Asset
});
}
Output - Der Testfall für die Funktion add() besteht aber den Test für subtract() schlägt wie unten gezeigt fehl.
00:00 +0: test to check sub
00:00 +0 -1: test to check sub
Expected: <10>
Actual: <9>
package:test expect
bin\Test123.dart 18:5 main.<fn>
00:00 +0 -1: test to check add method
00:00 +1 -1: Some tests failed.
Unhandled exception:
Dummy exception to set exit code.
#0 _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:938)
#1 _microtaskLoop (dart:async/schedule_microtask.dart:41)
#2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#3 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:394)
#4 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414)
#5 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
Gruppieren von Testfällen
Sie können die gruppieren test casesdamit es Ihrem Testcode mehr Bedeutung verleiht. Wenn Sie viele habentest cases Dies hilft, viel saubereren Code zu schreiben.
Im angegebenen Code schreiben wir einen Testfall für die split() Funktion und die trimFunktion. Daher gruppieren wir diese Testfälle logisch und nennen sieString.
Beispiel
import "package:test/test.dart";
void main() {
group("String", () {
test("test on split() method of string class", () {
var string = "foo,bar,baz";
expect(string.split(","), equals(["foo", "bar", "baz"]));
});
test("test on trim() method of string class", () {
var string = " foo ";
expect(string.trim(), equals("foo"));
});
});
}
Output - Die Ausgabe fügt den Gruppennamen für jeden Testfall wie unten angegeben hinzu. -
00:00 +0: String test on split() method of string class
00:00 +1: String test on trim() method of string class
00:00 +2: All tests passed