2013-08-26 3 views
11

Ich schreibe eine Dart Bibliothek und möchte es unittested haben. Ich erstellte Verzeichnis test und möchte meinen Tests hier setzen. Da ich viele Tests haben werde, möchte ich sie in mehrere Dateien aufgeteilt haben. Meine Fragen sind, was ist die Dart-Konvention, wie geht das? Ich möchte meine Tests einfach ausführen lassen, jedoch möchte ich auch nur eine Testdatei ausführen können.Wie mehrere Unittests in Dart in mehreren Dateien zu schreiben?

Was sind Ihre Vorschläge?

Antwort

13

Es ist üblich, Tests in mehrere Dateien zu trennen. Ich führe ein Beispiel dafür an, wie Sie das tun können.

Stellen Sie sich vor, dass Sie zwei Dateien mit Tests, foo_test.dart, bar_test.dart, die Tests für das Programm enthalten. foo_test.dart könnte wie folgt aussehen:

library foo_test; 

import 'package:unittest/unittest.dart'; 

void main() { 
    test('foo test',() { 
    expect("foo".length, equals(3)); 
    }); 
} 

Und bar_test.dart wie folgt aussehen könnte:

library bar_test; 

import 'package:unittest/unittest.dart'; 

void main() { 
    test('bar test',() { 
    expect("bar".length, equals(3)); 
    }); 
} 

Sie könnten in dieser Datei ausgeführt werden entweder Datei, und den Test enthalten würde ausführen .

Die, ich würde etwas wie eine all_tests.dart Datei erstellen, die die Tests von foo_test.dart und bar_test.dart importieren würde. Hier ist, was all_tests.dart könnte wie folgt aussehen:

import 'foo_test.dart' as foo_test; 
import 'bar_test.dart' as bar_test; 

void main() { 
    foo_test.main(); 
    bar_test.main(); 
} 

Wenn Sie all_tests.dart ausgeführt, sowohl die Tests von foo_test.dart und bar_test.dart würde ausführen.

Eine Sache zu beachten: Damit dies funktioniert, müssen Sie foo_test.dart und bar_test.dart als Bibliotheken deklarieren (siehe die erste Zeile jeder Datei). Dann in all_tests.dart, können Sie Import-Syntax verwenden, um die Inhalte der angegebenen Bibliotheken zu holen.

So organisiere ich die meisten meiner Tests.

+0

Das ist super, danke! – JesterXL

2

Es sind nicht mehrere Dateien erforderlich, um einen Test zu isolieren - siehe Running only a single test und Running a limited set of tests.

Um einen Test zu isolieren, ändern Sie test() in solo_test().

So können Sie alle Ihre Tests in der gleichen Datei (oder in mehreren Teilen) setzen.

1

Es gibt ein Werkzeug, das genau das tut, Dart Test Runner. Ein Auszug dieser Seite:

Dart Test Runner wird automatisch alle Tests in Ihrem Dart-Projekt in der richtigen Umgebung (VM oder Browser) erkennen und ausführen.

Es erkennt jede in einer mit _test.dart suffixed Datei writen wo Ihr Test-Code in einer main() Funktion ist. Es hat kein Problem, unittest Tests zu erkennen und auszuführen.

Es ist ziemlich einfach zu installieren und zu starten.Nur zwei Befehle:

$ pub global activate test_runner 
$ pub global run test_runner 

Für weitere Optionen, überprüfen Sie bitte Dart Test Runner Seite.