<

Flutter アプリのテスト

アプリの機能が増えるほど、手動でのテストが難しくなります。 自動テストは、事前にアプリが正しく動作するかどうかを確認するのに役立ちます。 機能とバグ修正の速度を維持しながら、それを公開します。

自動テストはいくつかのカテゴリに分類されます。

  • 単体テスト単一の関数、メソッド、またはクラスをテストします。
  • ウィジェットのテスト(他の UI フレームワークで参照されている) としてコンポーネントテスト) 単一のウィジェットをテストします。
  • アン結合テストアプリ全体またはアプリの大部分をテストします。

一般的に、十分にテストされたアプリには多くの単体テストとウィジェット テストが含まれています。 追跡者コードカバレッジ、さらに十分な統合テスト すべての重要なユースケースをカバーします。このアドバイスは以下に基づいています 異なる種類のテストの間にはトレードオフがあるという事実 以下に見られます。

  ユニット ウィジェット 統合
自信 低い より高い 最高
メンテナンス費用 低い より高い 最高
依存関係 少し もっと 多くの
実行速度 素早い 素早い 遅い

単体テスト

単体テスト単一の関数、メソッド、またはクラスをテストします。 単体テストの目的は、テストの正確性を検証することです。 さまざまな条件下での論理の単位。 テスト対象ユニットの外部依存関係は通常、嘲笑された。 単体テストは通常​​、読み取りまたは書き込みを行いません ディスクへの書き込み、画面へのレンダリング、またはからのユーザー アクションの受信 テストを実行しているプロセスの外側。 単体テストの詳細については、 以下のレシピをご覧いただけます または走るflutter test --helpあなたの端末で。

レシピ

ウィジェットのテスト

ウィジェットのテスト(他の UI フレームワークでは、コンポーネントテスト) 単一のウィジェットをテストします。ウィジェット テストの目的は、 ウィジェットの UI は期待どおりに表示され、動作します。ウィジェットのテストには以下が含まれます 複数のクラスがあり、 適切なウィジェットのライフサイクル コンテキスト。

たとえば、テスト対象のウィジェットは、 ユーザーのアクションとイベントに応答し、レイアウトを実行し、子のインスタンスを作成します。 ウィジェット。したがって、ウィジェット テストは単体テストよりも包括的です。 ただし、単体テストと同様に、ウィジェット テストの環境は次のように置き換えられます。 本格的な UI システムよりもはるかに簡単な実装です。

レシピ

結合テスト

アン結合テストアプリ全体またはアプリの大部分をテストします。 統合テストの目標は、すべてのウィジェットが正しく動作していることを確認することです。 およびテスト中のサービスは期待どおりに連携して動作します。 さらに、統合を使用することもできます アプリのパフォーマンスを検証するテスト。

一般に、結合テスト実際のデバイスまたは OS エミュレータ上で実行されます。 iOS シミュレータや Android エミュレータなど。 通常、テスト対象のアプリは分離されています 結果のゆがみを避けるために、テスト ドライバー コードから削除します。

統合テストの作成方法の詳細については、「統合 テストページ

レシピ

継続的統合サービス

継続的インテグレーション (CI) サービスを使用すると、 新しいコード変更をプッシュするときに自動的にテストします。 これにより、コードが適切かどうかに関するタイムリーなフィードバックが提供されます。 変更は期待どおりに機能し、バグは発生しません。

さまざまな連続テストの実行については、 統合サービスについては、以下を参照してください。

  • Flutter で fastlane を使用した継続的配信
  • Appcircle で Flutter アプリをテストする
  • Travis で Flutter アプリをテストする
  • Cirrus で Flutter アプリをテストする
  • Flutter 用の Codemagic CI/CD
  • Bitrise を使用した Flutter CI/CD
17029885-f35f-43a4-8f02-44ec1b5ae5​​69