2011-12-08 11 views
15

Dartはまだ専用のユニットテストフレームワークを持っていないようです。単体テストを作成し実行するための最良の方法は何ですか?Dartの単体テストを作成する最良の方法は何ですか?

次のようにダートのソースコード(例:\テスト\ Corelibでは\ SRC \ ListTest.dart)でいくつかの非常に低レベルの例があります:

class ListTest { 

    static testMain() { 
    testList(); 
    testExpandableList(); 
    } 

    static void testList() { ... } 
    static void testExpandableList() { ... } 
} 

main() { 
    ListTest.testMain(); 
} 

これはダートでのテストを書くために推奨される方法です、またはx-unitのような単体テストライブラリで簡単にするための努力はありますか?

はどのようにこのように書かれたすべてのユニット・テストを実行し、結果を表示する簡単な方法はありますか?ダートでの

+0

unittestパッケージが利用可能になったので、受け入れられた答えを以下のAntonyに変更することができますか? –

答えて

13

ユニットテストは非常にまだ開発中です。私たち(Dartの作者)は現在、すべてのテストを実行するためにpythonスクリプト(tools/test.py)を使用しています。スクリプトは定義済みのディレクトリを実行し、 'Test'で終わるファイルを探して実行し、期待される結果と比較します。

数日前、test.dartの最初のバージョン(ダートの等価)が送信されました。近い将来、tools/test.pyからtools/test.dartに切り替えて、すべてのテストを実行します。

あなたは私たちのテスト・フレームワークを再利用することができ、大きなプロジェクトを作成している場合。私たちは毎日それを使用しており、それはかなり安定しています。小規模なプロジェクトの場合、フレームワークの学習に費やされる時間は、その努力に値するものではないかもしれません。さらに、他のテストフレームワークが存在する(あるいは今後そうなる)のであれば、私は驚くことはありません。

質問からのListTestは、トップレベルの機能がまだ利用できなかった非常に早い時期に書かれています。それ以来、変更されています(main関数を追加しました)が、このような方法でテストを書くことはもうありません。必要でない限り、私たちはテストケースにクラスを作成しません。最近のテストでは、たとえばhereを参照してください。

編集:client/testing/unittest /にユニットテストフレームワークもあります。このフレームワークを使用したテストについては、hereを参照してください。これには、ブラウザで実行する利点もあります。

+0

単体テストを追加するだけで、スタンドアロンVMでの実行とカエル/ノードの上での実行もサポートされます。 – munificent

+2

この回答はちょっと古いです。今はトランクの先端にユニットテストライブラリがあります。 –

5

This post「Adam Coding」(G +経由)から、ダーツユニットテストの現在の状態を非常に詳細に説明します。ユニットテストのIn-Browserビューの素晴らしいスクリーンショットがあります。

7

dartlang.orgcurrent state of unit testing in dartについては非常に長い記事を持っています。 APIドキュメントはhereです。

import 'package:unittest/unittest.dart'; 

void main() { 
    test('QuickSort',() => 
    expect(QuickSort([5, 4, 3, 2, 1]), 
     orderedEquals([1, 2, 3, 4, 5])) 
); 
} 

int _Partition(List array, int left, int right, int pivotIndex) { 
    var pivotValue = array[pivotIndex]; 
    array[pivotIndex] = array[right]; 
    array[right] = pivotValue; 
    var storeIndex = left; 
    for (var i = left; i < right; i++) { 
    if (array[i] < pivotValue) { 
     var tmp = array[i]; 
     array[i] = array[storeIndex]; 
     array[storeIndex] = tmp; 
    } 
    } 
    var tmp = array[storeIndex]; 
    array[storeIndex] = array[right]; 
    array[right] = tmp; 
    return storeIndex; 
} 

void _QuickSort(List array, int left, int right) { 
    if (left < right) { 
    int pivotIndex = left + ((right-left)/2); 
    pivotIndex = _Partition(array, left, right, pivotIndex); 
    _QuickSort(array, left, pivotIndex-1); 
    _QuickSort(array, pivotIndex+1, right); 
    } 
} 

List QuickSort(List array) { 
    _QuickSort(array, 0, array.length-1); 
    return array; 
} 
2

廃止されていますが、それについての古い記事に遭遇する可能性があります。このパッケージは以前unittest名付けたhttps://pub.dartlang.org/packages/test

テストダートパッケージを使用してください。新しいテストは "テスト"パッケージ用に書かれているはずです。

テストは手動で(他のダーツプログラムと同様に)実行するか、またはpub(個々のテストを実行するか、ディレクトリ下で複数のテストを実行できます)を使用して実行できます。

関連する問題