LoginSignup
1
1

More than 3 years have passed since last update.

Flutter Integration Testの基本

Last updated at Posted at 2020-01-23

Integration Testの基本

Integration Testを色々調べて書いているうちに量が多くなってきたので基本部分だけ記事を分けました。
こちらは良く書かれている事ばかりですが、おさらいの意味で書きました。

flutter_driverライブラリを追加

pubspeck.yamlに以下のように記載します。

dev_dependencies:
  flutter_driver:
    sdk: flutter

基本のディレクトリ構造

lib
res
test
test_driver
|____●●●.dart
|____●●●_test.dart

test_driver のディレクトリを作成

各ファイルの設定

●●●.dart●●●_test.dart というファイルを作成します。※ ●●●は共通

●●●.dart
●●●_test.dart

WebViewの簡単なサンプルアプリです。
下記のコードのRaisedButtonウィジェットにkeyプロパティを設定しています。
Keyクラスの引数に名前を入れるとその名前でアクセスできるようになります。

- main.dart

import 'package:flutter/material.dart';
import 'package:flutter_webview/pages/web_view.dart';

void main() =>   runApp(new MaterialApp(
  title: 'Navigation with Routes',
  routes: <String, WidgetBuilder> {
    '/': (BuildContext context) => Home(),
    '/webView': (BuildContext context) => Browser()
  },
));


class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: const Text("Home"),
      ),
      body: new Center(
        child: new RaisedButton(
          // keyを設定
          key: Key('openPage'),
          child: const Text("Launch Next Screen"),
          onPressed: () {
            // WebView画面へ
            Navigator.of(context).pushNamed("/webView");
          },
        ),
      ),
    );
  }
}
  • main.dartの記述例
import 'package:flutter_driver/driver_extension.dart';
import 'package:sample/main.dart' as app;

void main() {
  // Flutter driver機能をONにする
  enableFlutterDriverExtension();
  // メインアプリを起動する
  app.main();
}
  • main_test.dartの記述例
// Imports the Flutter Driver API
import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';

void main() {
  group('Counter App', () {

    final counterTextFinder = find.byValueKey('openPage');

    FlutterDriver driver;

    setUpAll(() async {
      driver = await FlutterDriver.connect();
    });

    tearDownAll(() async {
      if (driver != null) {
        driver.close();
      }
    });
    // ボタンをタップ
    test('starts at 0', () async {
      await driver.tap(openPageFinder);
    });
  });
}
  • テスト方法 以下のコマンドにてテスト。
#flutter  drive --target=test_driver/main.dart

参考文献

Flutterの3種類のソースコードテスト(Unit Test, Widget Test, Integration Test)についてのまとめ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1