← Flutter / Dart

Flutter / Dart · 15 / 18

Unit- und Widget-Tests mit echten Erwartungen

Du prüfst Fachregeln und sichtbares Verhalten statt nur die Existenz von Code.

  • Mittel
  • Fortgeschritten
  • 45 min

Voraussetzungen: Fotos, Dateien und PDF-Ausgabe koordinieren

Ein Unit-Test prüft eine kleine Regel ohne Oberfläche. Ein Widget-Test baut eine Oberfläche und löst Benutzeraktionen aus. Beide sollen eine fachliche Erwartung ausdrücken. Ein Test, der lediglich die Implementierung nacherzählt, kann denselben Fehler wiederholen. Wir prüfen einen Zähler aus Tutorial 09 und betrachten anschließend die echten Service- und PDF-Tests von Fahrzeugakte.

Beispieldateien

01Den Ausgangsbildschirm herstellen

Verwende main.dart aus Tutorial 09 im Lernprojekt. Lege test/counter_test.dart an. Der Import ../lib/main.dart verweist auf diesen Bildschirm. flutter_test ist im Flutter-Projekt als Entwicklungsabhängigkeit verfügbar.

counter_test.dart · dartDatei öffnen
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import '../lib/main.dart';

void main() {
  testWidgets('adding an entry changes the displayed count', (tester) async {
    await tester.pumpWidget(const MaterialApp(home: CounterScreen()));
    expect(find.text('Entries: 0'), findsOneWidget);
    await tester.tap(find.text('Add entry'));
    await tester.pump();
    expect(find.text('Entries: 1'), findsOneWidget);
    expect(find.text('Entries: 0'), findsNothing);
  });
}

Starten / prüfen

flutter test test/counter_test.dart

02Vorher und nachher prüfen

pumpWidget baut die Oberfläche. find.text sucht sichtbaren Text. tap löst den Klick aus. pump verarbeitet den folgenden Frame. Vor der Aktion erwarten wir 0, danach 1. Ohne die zweite Prüfung könnte ein untätiger Button unbemerkt bleiben.

03Fehlerfälle aus Fachregeln ableiten

Teste für Services leere Namen, ungültige Stände und einen fehlschlagenden Speicher. Die echte Suite prüft auch Backup-Passwörter, PDF-Anhänge und Transaktionsgrenzen. Mocks sind sinnvoll für kontrollierte Fehler. Echte Datenbanktests prüfen zusätzlich das Verhalten des Adapters.

04Den Test gezielt fehlschlagen lassen

Ändere count++ im Bildschirm zu count += 2. Der Test muss fehlschlagen. Setze die Änderung anschließend zurück. Ein Test ist nur dann ein hilfreicher Nachweis, wenn er eine konkrete falsche Änderung entdeckt.

Erwartetes Ergebnis

flutter test test/counter_test.dart besteht. Bei Erhöhung um 2 schlägt die Erwartung Entries: 1 fehl.

Deine Übung

Ergänze einen zweiten Klick und prüfe die Anzeige Entries: 2.

Lösung mit Erklärung anzeigen

Führe tap und pump erneut aus und erwarte findsOneWidget für Entries: 2. Prüfe zusätzlich, dass Entries: 1 nicht mehr existiert. So wird das sichtbare Verhalten über mehrere Aktionen bestätigt.

Projektbezug und Quellen

Das Beispiel ist zum Lernen vereinfacht. Die verlinkte Codeversion zeigt die Anwendung im Projekt und die dortigen Prüfungen.