Lerne, wie du deine Dart-Übungen auf Exercism testest
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
Bevor du die Tests ausführst, lädst du die Abhängigkeiten der Übung herunter.
dart pub get
dart test
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 fehlgeschlagenFü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 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.
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.