機能を追加したり、既存の機能を変更したりしても、アプリが引き続き機能することをどのように確認できますか? テストを書くことによって。
単体テストは、単一の関数、メソッド、またはクラスの動作を検証するのに便利です。 testパッケージは単体テストを作成するためのコアフレームワークを提供し、flutter_testパッケージはウィジェットをテストするための追加のユーティリティを提供します。
このレシピは、次の手順を使用して、testパッケージによって提供されるコア機能を示しています。
- test,またはflutter_testパッケージを追加します。
- testファイルを作成します。
- テストするクラスのファイルを作成します。
- テストファイルに、テストするクラスのテストコードを記述します。
- 複数のテストをgroupに結合します。
- テストを実行します。
testパッケージについてのさらなる情報は、 test package documentation.をご覧ください。
Contents
1. Add the test dependency
- test,またはflutter_testパッケージを追加します。
testパッケージは、Dartでテストを作成するためのコア機能を提供します。 これは、Web、サーバー、およびFlutterアプリで使用されるパッケージを作成する場合の最良のアプローチです。
dev_dependencies:
test: <latest_version>
2. Create a test file
2.testファイルを作成します。
この例では、counter.dartとcounter_test.dartの2つのファイルを作成します。
counter.dartファイルには、テストするクラスが含まれており、libフォルダーにあります。 counter_test.dartファイルには、テスト自体が含まれており、testフォルダー内にあります。
通常、テストファイルはFlutterアプリケーションまたはパッケージのルートにあるテストフォルダー内にある必要があります。 テストファイルは常に_test.dartで終わる必要があります。これは、テストランナーがテストを検索するときに使用する規則です。
完了すると、フォルダ構造は次のようになります。
counter_app/
lib/
counter.dart
test/
counter_test.dart
3. Create a class to test
次に、テストする「ユニット」が必要です。 注意:「ユニット」は、関数、メソッド、またはクラスの別名です。 この例では、lib /counter.dartファイル内にCounterクラスを作成します。 これは、0から始まる値をインクリメントおよびデクリメントする役割を果たします。
class Counter {
int value = 0;
void increment() => value++;
void decrement() => value--;
}
注:簡単にするために、このチュートリアルは「テスト駆動開発」アプローチには従いません。 そのスタイルの開発に慣れている場合は、いつでもそのルートに進むことができます。
4. Write a test for our class
counter_test.dartファイル内に、最初の単体テストを記述します。
テストはトップレベルのtest関数を使用して定義され、トップレベルのexpect関数を使用して結果が正しいかどうかを確認できます。
これらの関数は両方ともtestパッケージからのものです。
// Import the test package and Counter class
import 'package:test/test.dart';
import 'package:counter_app/counter.dart';
void main() {
test('Counter value should be incremented', () {
final counter = Counter();
counter.increment();
expect(counter.value, 1);
});
}
5. Combine multiple tests in a group
相互に関連する複数のテストがある場合は、testパッケージで提供されるグループ関数を使用してそれらを組み合わせます。
import 'package:test/test.dart';
import 'package:counter_app/counter.dart';
void main() {
group('Counter', () {
test('value should start at 0', () {
expect(Counter().value, 0);
});
test('value should be incremented', () {
final counter = Counter();
counter.increment();
expect(counter.value, 1);
});
test('value should be decremented', () {
final counter = Counter();
counter.decrement();
expect(counter.value, -1);
});
});
}
6. Run the tests
これで、テストが配置されたCounterクラスができたので、テストを実行できます。
IntelliJまたはVSCodeを使用してテストを実行する
IntelliJおよびVSCodeのFlutterプラグインは、テストの実行をサポートしています。 これは、最速のフィードバックループとブレークポイントを設定する機能を提供するため、テストを作成する際に最適なオプションであることがよくあります。
IntelliJ
1.counter_test.dartファイルを開きます。
2.[ Run ] メニューを選択します。
3.[ Run ‘tests in counter_test.dart’ ]を選択します。
4.代わりに対応するショートカットを実行します。
参考