Testen im Dart-Track

Lerne, wie du deine Dart-Übungen auf Exercism testest


Eine Übung herunterladen

Mit der Exercism CLI lädst du die Übung herunter, an der du arbeiten möchtest.

exercism download --track=dart --exercise=hello-world

Wechsle dann in das Verzeichnis der Übung.

cd /path/to/exercism/dart/hello-world

Abhängigkeiten installieren

Bevor du die Tests ausführst, lädst du die Abhängigkeiten der Übung herunter.

dart pub get

Die Tests ausführen

dart test

Testergebnisse verstehen

dart test verwendet standardmäßig den kompakten Reporter und zeigt in einer einzigen Zeile fortlaufend an, wie viele Tests bestanden, übersprungen und fehlgeschlagen sind.

$ dart test
00:00 +1 -1: test/binary_search_test.dart: finds a value in the middle of an array [E]
  Expected: <3>
    Actual: <0>

  package:matcher                    expect
  test/binary_search_test.dart 13:5  main.<fn>


To run this test again: dart test test/binary_search_test.dart -p vm --plain-name 'finds a value in the middle of an array'
00:00 +1 ~9 -1: Some tests failed.
  • +1: 1 Test bestanden
  • ~9: 9 Tests übersprungen
  • -1: 1 Test fehlgeschlagen

Für eine ausführlichere Ausgabe pro Test verwendest du den erweiterten Reporter, der jedes Testergebnis anzeigt, sobald es ausgeführt wird.

$ dart test -r expanded
00:00 +0: loading test/binary_search_test.dart
00:00 +0: test/binary_search_test.dart: finds a value in an array with one element
00:00 +1: test/binary_search_test.dart: finds a value in the middle of an array
00:00 +1 -1: test/binary_search_test.dart: finds a value in the middle of an array [E]
  Expected: <3>
    Actual: <0>
  
  package:matcher                    expect
  test/binary_search_test.dart 13:5  main.<fn>
  
00:00 +1 -1: test/binary_search_test.dart: finds a value at the beginning of an array
00:00 +1 ~1 -1: test/binary_search_test.dart: finds a value at the end of an array
00:00 +1 ~2 -1: test/binary_search_test.dart: finds a value in an array of odd length
00:00 +1 ~3 -1: test/binary_search_test.dart: finds a value in an array of even length
00:00 +1 ~4 -1: test/binary_search_test.dart: identifies that a value is not included in the array
00:00 +1 ~5 -1: test/binary_search_test.dart: a value smaller than the array's smallest value is not found
00:00 +1 ~6 -1: test/binary_search_test.dart: a value larger than the array's largest value is not found
00:00 +1 ~7 -1: test/binary_search_test.dart: nothing is found in an empty array
00:00 +1 ~8 -1: test/binary_search_test.dart: nothing is found when the left and right bounds cross
00:00 +1 ~9 -1: Some tests failed.

Die Tests durcharbeiten

Die meisten Übungen haben mehrere Tests, von denen standardmäßig alle bis auf den ersten übersprungen werden.

void main() {
  final twoFer = TwoFer();

  group('TwoFer', () {
    test('no name given', () {
      final result = twoFer.statement();
      expect(result, equals('One for you, one for me.'));
    }, skip: false);

    test('a name given', () {
      final result = twoFer.statement('Alice');
      expect(result, equals('One for Alice, one for me.'));
    }, skip: true);

    test('another name given', () {
      final result = twoFer.statement('Bob');
      expect(result, equals('One for Bob, one for me.'));
    }, skip: true);
  });
}

Um die Tests nacheinander durchzuarbeiten, änderst du bei jedem Test skip: true in skip: false, während du vorangehst. Alternativ kannst du alle Tests auf einmal ausführen, ohne die Datei zu bearbeiten.

dart test --run-skipped

Beim Einreichen werden alle Tests vom Online-Test-Runner ausgeführt, auch die übersprungenen.

Den Fehler „Could not find a command named frontend_server.dart.snapshot“ behandeln

Angenommen, du hast eine Übung bereits gelöst und eingereicht und kehrst nach einer Weile zu ihr zurück. Beim Testen kann dir dann dieser Fehler begegnen:

$ dart test
...
Could not find a command named "/path/to/frontend_server.dart.snapshot".

Die Lösung ist, die Datei pubspec.lock zu löschen. Führe danach den dart-Befehl erneut aus.