docs.flutter.dev/testing/overviewの翻訳・補足です。
1.概要
上記概要)
(1)パッケージ
・integration_test:
>flutter pub add –dev –sdk=flutter integration_test
・flutter_driver:
>flutter pub add –dev –sdk=flutter flutter_driver
・test:
>flutter pub add –dev test
(2)単体テスト
・メソッド等単体のテスト
・テストファイル: test フォルダ配下に配置(例: クラス名_test.dart)
・import: testパッケージ
・エントリーポイント、テストシナリオ: main(){}
・使用関数: group(), test(), expect(), 等
(∵主に、メソッド実行→結果照合)
(3)ウィジェットテスト
・UI操作を含めたテスト
・テストファイル: testフォルダ配下に配置(例: home_test.dart、 クラス名_test.dart)
・import: testパッケージ、flutter_testパッケージ
・エントリーポイント: テスト対象(Widget build 保有クラス)をMaterialラップしたWdiget
→ テストシナリオでテスト対象として(tester.pumpWidget(***)で)呼び出す
・テストシナリオ: main(){}
・使用関数: group(), testWidgets(), pumpWidget(), expect(),
find, text(), byType(), tester, fling(), tap(), 等
(∵主に、UI操作→結果照合、目視確認)
(4)統合テスト
・テストファイル: integration_test フォルダ配下に配置(例: app_test.dart)
・import: flutter_testパッケージ
・エントリーポイント、テストシナリオ: main(){}
・使用関数: group(), testWidgets(), pumpWidget(), expect(),
find, text(), byType(), tester, fling(), tap(), 等
(∵主に、UI操作→結果照合、目視確認)
2.単体テスト
(1)単体テスト入門
//テスト対象のインポート
import 'package:counter_app/counter.dart';
//testパッケージのインポート
import 'package:test/test.dart';
//エントリーポイント(たいていmain(){})
void main() {
//group()により複数のテストシナリオを一度に試験できる
group('Counter 加減算 のテスト',(){
//test()によるテストシナリオ開始(1つ目)
test('Counter value の加算', () {
//テスト対象(たいていクラス)インスタンス生成
final counter = Counter();
//テスト対象(たいていメソッド)実行
counter.increment();
//expect()による結果照合
expect(counter.value, 1);
});
//test()によるテストシナリオ開始(2つ目)
test('Counter value の減算', () {
//テスト対象(たいていクラス)インスタンス生成
final counter = Counter();
//テスト対象(たいていメソッド)実行
counter.decrement();
//expect()による結果照合
expect(counter.value, -1);
});
});
}
> flutter test test /***_test.dart //上記の全てのテスト実行
00:02 +2: All tests passed! //結果
//上記で、個別にテストを実行する場合は、
--plain-name "group指定名、test指定名" を使用して、
> flutter test --plain-name "Counter 加減算 のテスト, Counter value の加算, Counter value の減算"
の様に実行します
(2)Mockito を使用した依存関係のモック
(参照)Flutterテストのプラグイン
(参照)プラグインのテスト
3.ウィジェットテスト
(1)導入
(2)ウィジェットを探す
(3)スクロールを処理する
(4)UIをシミュレートする
4.統合テスト
(1)導入
・統合テストの概念
・用語
・依存パッケ結合テストのユースケース
(2)統合テストを書いて実行する
・統合テストでアプリの機能を確認する
・テスト用の新しいアプリを作成する
・integration_test依存関係を追加する
・統合テストファイルを作成する
・統合テストを書く
・統合テストを実行する
・各プラットフォーム向けに実行する
・Firebase Test Lab を使用してテストする
(3)統合テストのプロファイルを作成する
・統合テストでパフォーマンスを測定する
1. アイテムのリストをスクロールするテストを書く
2. アプリのパフォーマンスを記録する
3. 結果をディスクに保存する
4. テストを実行する
5. 結果を確認する
(参考)継続的インテグレーション
Flutter による fastlane を使用した継続的デリバリー