Dart:
Tests schreiben
Wie:
In Dart wird üblicherweise das test
-Paket zum Schreiben von Tests verwendet. Fügen Sie zunächst das test
-Paket zu Ihrer pubspec.yaml
hinzu:
dev_dependencies:
test: ^1.0.0
Schreiben Sie dann einen Test für eine einfache Funktion. Nehmen wir an, Sie haben eine Funktion, die zwei Zahlen addiert:
int addiere(int a, int b) {
return a + b;
}
Erstellen Sie anschließend eine Datei mit dem Namen add_test.dart
im Verzeichnis test
und schreiben Sie Ihren Testfall:
import 'package:test/test.dart';
import '../lib/add.dart'; // Nehmen Sie an, Ihre `addieren`-Funktion befindet sich in lib/add.dart
void main() {
test('addiert zwei Zahlen', () {
var erwartet = 3;
expect(addiere(1, 2), equals(erwartet));
});
}
Um die Tests auszuführen, verwenden Sie den Dart-Befehl:
$ dart test
Die Ausgabe könnte folgendermaßen aussehen:
00:01 +1: Alle Tests bestanden!
Verwendung einer Drittanbieter-Bibliothek: Mockito für das Mocking
Für das Testen von Code mit komplexen Abhängigkeiten könnten Sie Mockito verwenden, um Mock-Objekte zu erstellen. Fügen Sie zuerst Mockito zu Ihrer pubspec.yaml
hinzu:
dev_dependencies:
mockito: ^5.0.0
Angenommen, Sie haben eine Klasse BenutzerRepository
, die Benutzerdaten abruft, und Sie möchten einen BenutzerService
testen, der von BenutzerRepository
abhängt, ohne eine echte Datenbank zu verwenden:
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:your_project/benutzer_repository.dart';
import 'package:your_project/benutzer_service.dart';
// Erstellen eines Mock-Objekts mit Mockito
class MockBenutzerRepository extends Mock implements BenutzerRepository {}
void main() {
group('BenutzerService Tests', () {
test('Ruft Benutzerdaten erfolgreich ab', () {
// Mock-Instanz erstellen
final mockBenutzerRepository = MockBenutzerRepository();
final benutzerService = BenutzerService(mockBenutzerRepository);
// Mock-Verhalten einrichten
when(mockBenutzerRepository.fetchUser(1)).thenReturn(Benutzer(id: 1, name: 'Test Benutzer'));
// Überprüfung, dass die gemockte Methode mit den erwarteten Argumenten aufgerufen wird
expect(benutzerService.getBenutzerName(1), 'Test Benutzer');
verify(mockBenutzerRepository.fetchUser(1)).called(1);
});
});
}
Die Ausführung dieses Tests bestätigt, dass BenutzerService
korrekt mit BenutzerRepository
interagiert, indem Mocking verwendet wird, um die echten Interaktionen auf kontrollierte Weise zu simulieren.