2013-08-26 14 views
11

私はダーツライブラリをいくつか書いており、それをユニットテストしたいと思っています。ディレクトリtestを作成し、ここにテストを入れたいと思います。私はたくさんのテストをするつもりだから、それらを複数のファイルに分けたいと思っています。私の質問は、ダートの大会は何ですか、それを行う方法です。テストをすべて簡単に実行したいのですが、テストファイルを1つだけ実行したいと考えています。複数のunittestを複数のファイルでダーツに書き込む方法は?

あなたの提案は何ですか?

答えて

13

複数のファイルにテストを分けるのが一般的です。私はあなたがそれをどうやってできるかの例を挙げています。

プログラムのテストを含むfoo_test.dart、bar_test.dartの2つのファイルがあるとします。このようなものになります

library foo_test; 

import 'package:unittest/unittest.dart'; 

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

そしてbar_test.dart:

library bar_test; 

import 'package:unittest/unittest.dart'; 

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

をあなたはどちらかのファイルを実行することができ、そのファイルに含まれているテストを実行でしょうfoo_test.dartはこのような何かを見ることができます。

私は、foo_test.dartとbar_test.dartからテストをインポートするall_tests.dartファイルのようなものを作成します。ここでall_tests.dartように見えることができるものである:

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

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

あなたがall_tests.dartを実行した場合、foo_test.dartとbar_test.dartからの両方のテストを実行します。

注意すべきこと:これがすべて機能するには、foo_test.dartとbar_test.dartをライブラリとして宣言する必要があります(各ファイルの最初の行を参照)。次に、all_tests.dartでは、import構文を使用して、宣言されたライブラリの内容をフェッチすることができます。

これは私のテストの大部分を構成する方法です。

+0

これは素晴らしいです、ありがとうございます! – JesterXL

2

テストを分離するために複数のファイルを持つ必要はありません。Running only a single testRunning a limited set of testsを参照してください。

テストを分離するには、test()solo_test()に変更します。

すべてのテストを同じファイル(または複数の部分)に入れることができます。

1

正確にはDart Test Runnerのツールがあります。そのページからの抜粋:

Dart Test Runnerは、適切な環境(VMまたはブラウザ)でDartプロジェクトのすべてのテストを自動的に検出して実行します。

それはあなたのテストコードがmain()関数内で_test.dart接尾辞のファイルに書か任意のテストを検出します。これは、unittestテストを検出して実行することに問題はありません。

インストールして実行するのはかなり簡単です。ちょうど2つのコマンド:

$ pub global activate test_runner 
$ pub global run test_runner 

より多くのオプションについては、Dart Test Runnerページをご確認ください。

関連する問題