[読書会]テストの概要

docs.flutter.dev/testing/overviewの翻訳・補足です。

1.概要

(参照)Flutterアプリのテストの実践的な練習

上記概要)
(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)単体テスト入門

(まとめ) テストファイル名の形式:***_test.dart
//テスト対象のインポート
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 を使用した継続的デリバリー

AppcircleでFlutterアプリをテストする

TravisでFlutterアプリをテストする

CirrusでFlutterアプリをテストする

Flutter 向け Codemagic CI/CD

Bitrise を使用した Flutter CI/CD

コメントを残す