1

Dart ライブラリの 1 つの単体テストのセットを作成しましたが、それらをフィルタリングして、継続的なビルド中に特定のものだけを実行できるようにしたいと考えています。unittest api でこれを実行できることに気付きましたが、例が見つかりません。

4

1 に答える 1

2

カスタム構成を作成して を使用することで、実行するテストをフィルタリングできますfilterTests()

import "package:unittest/unittest.dart";

class FilterTests extends Configuration {
  get autoStart => false; // this ensures that the tests won't just run automatically
}

void useFilteredTests() {
  configure(new FilterTests()); // tell configure to use our custom configuration
  ensureInitialized(); // needed to get the plumbing to work
}

次に、main()を使用して、実行するテストの文字列または正規表現を使用useFilterTests()して呼び出します。filterTests()

void main() {
  useFilteredTests();

  // your tests go here

  filterTests(some_string_or_regexp);
  runTests();
}

説明が引数 to に一致するテストfilterTests()が実行されます。他のテストはしません。役に立つかもしれない使用に関するブログ記事を書きました。filterTests()

テストをフィルタリングするもう 1 つの方法は、テストを複数のライブラリに分割してから、テストを実行するライブラリのみimport()main()関数を分割することです。したがって、いくつかのテストを含む 1 つのライブラリを想像してください。

library foo_tests;

import "package:unittest/unittest.dart";

void main() {
  // some tests for foo()
}

および他のテストを含む別のもの:

library bar_tests;

import "package:unittest/unittest.dart";

void main() {
  // some tests for bar()
}

main()これらの各ライブラリからインポートすることで、テストランナーを縫い合わせることができます。では、my_tests.dartこれを実行してすべてのテストを実行できます。

import "package:unittest/unittest.dart";
import "foo_tests.dart" as foo_tests;
import "bar_tests.dart" as bar_tests;

void main() {
  foo_tests.main();
  bar_tests.main();
}

foo_testsのみまたはのみを実行したい場合はbar_tests、1 つだけインポートできます。これにより、効果的にフィルターが作成されます。これらのインポートがどのように機能するかの簡単な実例を次に示します

于 2013-01-18T01:49:01.923 に答える