<

結合テスト

このページでは、その使い方について説明します。integration_test実行するパッケージ 統合テスト。このパッケージを使用して作成されたテストには次のものがあります。 プロパティ:

  • との互換性flutter drive指図、 物理デバイスまたはエミュレータ上でテストを実行するため。
  • 実行できる能力Firebase テスト ラボ、 さまざまなデバイスでの自動テストが可能になります。
  • との互換性flutter_testAPI、 と同様のスタイルでテストを作成できるようにします。ウィジェットのテスト

概要

単体テスト、ウィジェットテスト、統合テスト

Flutter がサポートするテストには 3 種類があります。 あユニットテストはメソッドまたはクラスの動作を検証します。 あウィジェットのテストFlutter ウィジェットの動作を検証します アプリ自体を実行せずに。アン結合テスト(また エンドツーエンド テストまたは GUI テストと呼ばれます) は完全なアプリを実行します。

ホストとターゲット

開発中はおそらくコードを書いていると思います。 と呼ばれるデスクトップコンピュータ上で、ホストマシーン、 モバイルデバイス、ブラウザ上でアプリを実行し、 またはデスクトップ アプリケーションと呼ばれる、目標デバイス。 (Webをご利用の場合 ブラウザまたはデスクトップアプリケーション、 ホスト マシンはターゲット デバイスでもあります。)

統合テスト

で書かれたテストintegration_testパッケージでは次のことができます。

  1. ターゲットデバイス上で直接実行できるため、テストが可能 Firebase Test Lab を使用した複数の Android または iOS デバイス。
  2. を使用して実行しますflutter test integration_test
  3. 使用flutter_testAPI、統合テストをさらに容易にする 書くようなウィジェットのテスト

flutter_driver からの移行

を使用している既存のプロジェクトflutter_driverに移行できますintegration_test以下に従ってくださいflutter_drive からの移行ガイド。

プロジェクトのセットアップ

追加integration_testflutter_testpubspec.yaml ファイルに次のように追加します。

dev_dependencies:
  integration_test:
    sdk: flutter
  flutter_test:
    sdk: flutter

プロジェクト内に新しいディレクトリを作成しますintegration_test/新しいファイルを使用して、<name>_test.dart:

import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

void main() {
    testWidgets('failing test example', (tester) async {
    expect(2 + 2, equals(5));
  });
}

ディレクトリ構造

lib/
  ...
integration_test/
  foo_test.dart
  bar_test.dart
test/
  # Other unit tests go here.

以下も参照してください。

  • 統合テストの使用法

flutterコマンドを使って実行する

これらのテストは次のコマンドで起動できます。flutter testコマンド、ここで<DEVICE_ID>: オプションのデバイス ID またはパターンが表示されます の出力でflutter devices指図:

flutter test integration_test/foo_test.dart -d <DEVICE_ID>

これにより、テストが実行されますfoo_test.dart。このディレクトリ内のすべてのテストを実行するには デフォルトのデバイスで、次を実行します。

flutter test integration_test

ブラウザで実行する

初め、ChromeDriverをダウンロードしてインストールしますそしてポート 4444 で実行します。

chromedriver --port=4444

テストを実行するにはflutter drive、新しいファイルを含む新しいディレクトリを作成します。test_driver/integration_test.dart:

import 'package:integration_test/integration_test_driver.dart';

Future<void> main() => integrationDriver();

それから加えてIntegrationTestWidgetsFlutterBinding.ensureInitialized()あなたの中でintegration_test/<name>_test.dartファイル:

import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

void main() {
  IntegrationTestWidgetsFlutterBinding.ensureInitialized(); // NEW

  testWidgets('failing test example', (tester) async {
    expect(2 + 2, equals(5));
  });
}

別のプロセスで、実行しますflutter_drive:

flutter drive \
  --driver=test_driver/integration_test.dart \
  --target=integration_test/counter_test.dart \
  -d web-server

詳細については、を参照してください。Web での Flutter ドライバー テストの実行ウィキページ。

Firebase Test Lab でのテスト

Firebase Test Lab は Android の両方で使用できます。 iOS ターゲット。

Androidのセットアップ

の指示に従ってください。Android デバイスのテストREADME のセクション。

iOSのセットアップ

の指示に従ってください。iOSデバイスのテストREADME のセクション。

テスト ラボ プロジェクトのセットアップ

に行きますFirebaseコンソール、 新しいプロジェクトがない場合は作成します すでに。次に、次の場所に移動します品質 > テストラボ:

Firebase Test Lab Console

Android APK のアップロード

Gradle を使用して APK を作成します。

pushd android
# flutter build generates files in android/ for building the app
flutter build apk
./gradlew app:assembleAndroidTest
./gradlew app:assembleDebug -Ptarget=integration_test/<name>_test.dart
popd

どこ<name>_test.dartで作成されたファイルですプロジェクトのセットアップセクション。

「デバッグ」APK を<flutter_project_directory>/build/app/outputs/apk/debugアンドロイドロボテストWeb ページ上のターゲット。 これにより、Robo テストが開始され、実行できるようになります。 その他のテスト:

Firebase Test Lab upload

クリックテストを実行する、 を選択計装テストタイプとドラッグ 次の 2 つのファイル:

  • 5138249a-糞-4425-9ba8-d77dd1038951
  • <flutter_project_directory>/build/app/outputs/apk/androidTest/debug/<file>.apk

Firebase Test Lab upload two APKs

障害が発生した場合、 赤いアイコンを選択すると出力を表示できます。

Firebase Test Lab test results

コマンドラインから Android APK をアップロードする

を参照してください。README の Firebase Test Lab セクションコマンドラインからAPKをアップロードする手順については、「」を参照してください。

Xcode テストのアップロード

を参照してください。Firebase TestLab iOS の手順.zip ファイルをアップロードする方法の詳細については、 Firebase コンソールの Firebase TestLab セクションに移動します。

コマンドラインからの Xcode テストのアップロード

を参照してください。iOSデバイスのテストREADME のセクション .zip ファイルをアップロードする方法については、 コマンドラインから。