
講座内容の概要
FlutterでテストをTDDで始めて、自信を持ってプログラミングしよう!
Flutter のテストの3種類、ユニットテスト(Unit test)、ウィジェットテスト(Widget test)、インテグレーションテスト(Integration test)を理解します。
Flutter のテストと、ブラックボックスとホワイトボックスの関係を理解します
Flutter のテストと、単体テスト・結合テスト・総合テストの関係を理解します
テスト対象のアプリのプロジェクトを作成します
TDD( Test Driven Development、テスト駆動開発)の対象になるiOSの計算機のひな形を実際に動かしてみます
実際に動かしたiOSの計算機のひな形のGUIを解説します。
実際に動かしたiOSの計算機のひな形のGUIのボタンの微調整を解説します。
Flutterのプロジェクトのデフォルトのテストの内容と、テストするためのロジックのdartファイルを作成します。
ロジックを作成して、GUIとどのように連動させるのかを説明します
テストを作成し、flutter testを実行します。
flutter testをGUIから複数のテストを実施します。そのときの問題になる点を解説します。
計算機のキーが連続で入力されたケースを実装し、テストします
テストを実行することで、作成中のソースの問題点がわかり、修正できることを理解します。
TDD(Test Driven Development・テスト駆動開発)の3つのステップを理解します。
iPhoneの実際の計算機がどのよな動作をするか確認します。
flutter testは自分で作成したプログラムだけでなく、プロジェクトに導入するプラグイン(他人の作成したプログラム)の動作確認にも使えることを理解する。
flutter testでプラグインの細かい挙動を確認するためのテストを作成します
修正前のプログラムを、flutter testすることで、プログラムのテストを失敗することを確認する
プログラムを修正し、flutter testを実行することで、プログラムのテストが成功し、実装に問題ないことを確認する
intlライブラリがニーズに合っているかをテストコードを作成し、flutter testを実施し、問題ないことを確認する。
小数点が入力できることを確認するためのテストコードを作成する。未実装のため、flutter testが失敗することを確認する
小数点を入力したときの挙動を作成する。flutter testを実施し、実装に問題ないことを確認する
テストが多くなってきたので、groupを使って、テストをまとめる。グループごとのflutter testの方法を確認する
0を連続入力したケースのテストを作成する。flutter testが失敗することを確認する
小数点以下で0を連続したケースを実装する。「リファクタリング」の考え方を学習する
実際にリファクタリングを行い、変更前と変更後でflutter testを実施し、変更により挙動が変わっていないことを確認する
四則演算のある式をテストします。
Widget Testを作成する前に、フォルダを整理します。flutter test で複数のファイルをテストできることを確認します
Flutter TestのFlutter2.0用のインテグレーションテストについて、理解できます
インテグレーションテストを使って、画面にテキスト「1」が複数あることを確認する
インテグレーションテストのために、WidgetにKeyを張る具体的な方法を学習します
Flutterのテストで使用するFinderのtext, byIconを学びます
Flutterのテストで使用するFinderのfindByKeyを学びます
Flutterのテストで使用するFinderのwidgetWithTextを学びます
Flutterのテストで使用するFinderのbyTypeを学びます
Flutterのテストで使用するFinderのfindWithIconを学びます
Flutterのテストで使用するFinderのbyTooltipを学びます
Flutterのテストで使用するFinderのbySemanticLabelを学びます
Flutterでモックを使う目的を説明します。またパッケージとしては、mockitoを使うこと、DI(Dependency Injection=依存性の注入)を使うことを説明します
Flutterのモックのパッケージmockitoをインストールします
mockitoでテストする対象のアプリの機能を説明します。GithubApiの説明をします。
GithubApiからデータを取得するクラスを作成します
作成したGithubApiRepositoryをアプリ本体のコードから呼び出し、アプリでGithubApiのレポジトリ数を表示できるようにします
実際にmockitoでモックを作成します。またモックの設定をして、テストします
FlutterのDI(Dependencty Injection)パッケージ get_it をインストールします
get_it でアプリコードにDIの呼ばれる側の設定を行います
mockitoのモックをDIで、テストコード内で使用するようにします
テストコードではモッククラス、アプリコードでは通常のhttp.Clientクラスがどのような挙動をしているか学びます
DIの基本が分かりましたので、Githubと連携するクラスのモック化をしましょう
Githubと連携するクラスのDIの設定を行います
Githubと連携するクラスのモックの設定をします
Githubと連携するクラスのモックの呼び出し側の設定を作成します
Githubと連携するクラスのモックでWidget Testを実行します
mockito, get_it, DI など学んだことを振り返ります
Flutter の test の基本の expect を勉強します。Flutterのtestのチートシートへのリンクがあります。
Flutter の test のMatcherの isNull, isNotNullを勉強します
Flutter の test のMatcherの same, isNot を勉強します
Flutter の test のMatcherの isNot を勉強します
Flutter の test のMatcherの isTrue, isFalse を勉強します
Flutter の test のMatcherのisNan, isNotNan を勉強します
Flutter の test で文字列の確認 を勉強します
Flutter の test のMatcherの equals, equalsIgnoringを勉強します
Flutter の test のMatcherのequalsIgnoringWhitespace を勉強します
Flutter の test のMatcherの contains を勉強します
Flutter の test のMatcherのstartsWith, endsWith を勉強します
Flutter の test のMatcherの stringContainsInOrder を勉強します
アプリの開発に時間がかかって、テストまで手が回らない。だが、アプリの品質は保たなきゃならない。私も個人でアプリ開発をしてますが、開発の方が楽しいし、時間もないしで、テストはうんざり。自動でテストができて、アプリの品質を担保する切り札、それがテストファースト、テスト駆動開発です!
実際にテストファーストでiOSの計算機アプリのクローンを作りながら、どのようにテストを作成し、アプリを開発していくかが理解できます。ただ、Flutterの本当の初心者にはお勧めしません。Flutterのインストール方法やWidgetの解説はしてません。初心者から中級者になって、アプリの品質をあげたい!と思っている方限定です。
現場のエンジニアだけが知っているテストファースト、テスト駆動開発を一緒に学んでいきましょう。
私の説明力が不足してるようでしたら、30日以内なら返金可能です!
【本講座で学べること】
Flutterにおけるテストの基礎知識と実践
テストを実施しやすいシステム構成
ユニットテスト: Dartのみでのロジックのテスト
ウィジェットテスト:FlutterのWidgetをパーツ単位でテスト
インテグレーションテスト: Flutterから実機・エミュレータを自動操作し、テストと画面キャプチャ
テスト作成の基礎知識(ホワイトボックステスト・ブラックボックステスト、同値クラステスト、境界値テスト)
テスト駆動開発・リファクタリングの実践
【更新】
2024/03/02 Flutter 3.19.2に対応しました。変更点をレクチャー「【対応報告】Flutter 3.19.2に対応」にまとめました