私はいくつかの Dart ライブラリを作成しており、それを単体テストしたいと考えています。ディレクトリを作成test
し、ここにテストを配置したいと考えています。たくさんのテストがあるので、それらを複数のファイルに分けたいと思っています。私の質問は、Dart コンベンションとは何か、それを行う方法です。テストをすべて簡単に実行したいのですが、テストのファイルを 1 つだけ実行できるようにしたいです。
あなたの提案は何ですか?
私はいくつかの Dart ライブラリを作成しており、それを単体テストしたいと考えています。ディレクトリを作成test
し、ここにテストを配置したいと考えています。たくさんのテストがあるので、それらを複数のファイルに分けたいと思っています。私の質問は、Dart コンベンションとは何か、それを行う方法です。テストをすべて簡単に実行したいのですが、テストのファイルを 1 つだけ実行できるようにしたいです。
あなたの提案は何ですか?
テストを複数のファイルに分けるのが一般的です。それを行う方法の例を含めています。
プログラムのテストを含む 2 つのファイル、foo_test.dart、bar_test.dart があるとします。foo_test.dart は次のようになります。
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 と 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 の両方のテストが実行されます。
1 つの注意点: これらすべてを機能させるには、foo_test.dart と bar_test.dart をライブラリーとして宣言する必要があります (各ファイルの最初の行を参照)。次に、all_tests.dart で、インポート構文を使用して、宣言されたライブラリの内容を取得できます。
これは、私がほとんどのテストを整理する方法です。
まさにそれを行うツール、Dart Test Runnerがあります。そのページからの抜粋:
Dart Test Runner は、Dart プロジェクトのすべてのテストを自動的に検出し、適切な環境 (VM またはブラウザー) で実行します。
_test.dart
テストコードが関数内にある場所でサフィックスが付けられたファイルに書かれたテストを検出しmain()
ます。unittestテストの検出と実行に問題はありません。
インストールして実行するのはとても簡単です。2 つのコマンドのみ:
$ pub global activate test_runner
$ pub global run test_runner
その他のオプションについては、Dart Test Runnerページを確認してください。
一度に多数のテストを実行しているときに、誰にとっても役立つ場合は、
テストを書いていましたが、テスト ファイル名が で終わらないため *_test.dart
、一度にすべてのテストを実行できませんでした。
一度にすべてのテストを実行したい場合は、dart ファイルを _test.dart で終わらせることが必須です。