17

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

Dart ソース コード (例: \tests\corelib\src\ListTest.dart) には、次のような非常に低レベルの例がいくつかあります。

class ListTest {

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

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

main() {
  ListTest.testMain();
}

これは Dart でテストを記述するための推奨される方法ですか、それとも x-unit のようなユニット テスト ライブラリを使用して簡単にするための努力はありますか?

この方法で記述されたすべての単体テストを実行して結果を確認する簡単な方法はありますか?

4

6 に答える 6

13

Dart の単体テストはまだ開発中です。私たち (Dart の作成者) は現在、python スクリプト (tools/test.py) を使用してすべてのテストを実行しています。スクリプトは、事前定義されたディレクトリを実行し、「Test」で終わるファイルを探して実行し、期待される結果と比較します。

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

大きなプロジェクトを作成している場合は、テスト フレームワークを再利用できます。私たちは毎日それを使用していますが、それはかなり安定しています。小規模なプロジェクトの場合、フレームワークの学習に費やす時間は、その労力に見合わない場合があります。さらに、他のテストフレームワークが存在する (または存在する可能性がある) としても、私は驚かないでしょう。

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

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

于 2011-12-08T21:11:07.603 に答える
7

dartlang.orgには、 dart での単体テストの現状に関する非常に長い記事があります。API ドキュメントはここにあります。

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;
}
于 2012-06-28T21:38:47.393 に答える
4

テストDart パッケージを使用するhttps://pub.dartlang.org/packages/test

このパッケージは、以前はunittestという名前でしたが、現在は廃止されていますが、それに関する古い記事に出くわすかもしれません。「テスト」パッケージ用に新しいテストを作成する必要があります。

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

于 2016-01-11T04:11:24.363 に答える
1

DartのTDDに関するブログ:http: //tdd-dart.blogspot.com/

于 2012-02-05T20:57:33.900 に答える
1

YouTubeには、1つのアプローチであるDartUnitの例があります。DartのFizzBu​​zzのTDDです。

コードはGitHubにあります。

于 2011-12-20T15:48:22.627 に答える