Flutter UI 测试

在Flutter中,UI测试被称作集成测试。Flutter集成测试类似iOS的XCUITest或Android的Expresso一样来执行UI自动化测试。Flutter的集成测试在一个单独的环境运行,可以运行在真实的设备或者模拟器上面。Flutter提供了一个flutter_driver包来编写UI测试。

Flutter应用程序的UI测试是如何执行UI测试:

Flutter UI测试作为黑盒运行,与主应用程序分开的线程运行。

Flutter UI测试无法访问Flutter应用程序的数据或API,这给Flutter UI测试带来了额外的挑战。

Flutter UI测试准备工作:

首先,必须创建应用程序的测试版本,并将它部署到真机或模拟器中。

然后,通过测试套件驱动应用程序,flutter_driver编写测试用例。

Flutter Driver 启动本地服务运行测试,可以看到测试日志。

启动Flutter UI Tests

在创建一个新的Flutter项目时,默认Flutter模板并不包括UI测试库,需要先添加UI测试库,为了可以行UI测试,我们需要完成以下任务:

得到 flutter_driver 包。

设置测试目录

创建测试应用程序

通过flutter_driver提供的API编写UI

在真机或模拟器中执行UI测试

获得 flutter_driver 包

在pubspec.yaml文件中添加flutter_driver 的依赖dev_dependencies。

dev_dependencies:
  flutter_driver:
  sdk: flutter

完成上面配置后,运行命令下载包:

$ flutter packages upgrade

这个命令将下载 flutter_driver包的最新,并且锁版本在pubpec.lock文件。现在可以在项目中使用flutter_driver了。

设置UI测试目录

现在可以创建一个flutter UI测试目录了,这个目录通常叫test_diver/。在这该目录下创建两个文件:

一个是应用程序文件main.dart,另一个是用于测试应用程序的UI测试文件main_test.dart。

 $ mkdir test_driver
  $ touch test_driver/main.dart
  $ touch test_driver/main_test.dart

创建应用程序

打开main.dart 编写简单的demo。

   import 'package:flutter_driver/driver_extension.dart';
  import 'package:flutter_demo/main.dart' as app;
  void main() {
  enableFlutterDriverExtension();
  app.main();
  }

这段代码将启动App并检测版本。

编写UI测试

有了应用程序,就可以用Flutter Driver编写UI测试了。参考文档:

https://flutter.dev/docs/cookbook/testing/integration/introduction#5-write-the-tests

分四个步骤:

在setup中连接App驱动

在teardwon方法断开App连接

使用SerializableFinder查找widget

使用expect断言信息

打开main_test.dart文件编写测试:

 void main() {
  group('Home Screen Test', () {
  FlutterDriver driver;
  setUpAll(() async {
  // Connects to the app
  driver = await FlutterDriver.connect();
  });
  tearDownAll(() async {
  if (driver != null) {
  // Closes the connection
  driver.close();
  }
  });
  test('verify the text on home screen', () async {
  SerializableFinder message = find.text("You have pushed the button this many times:");
  await driver.waitFor(message);
  expect(await driver.getText(message), "You have pushed the button this many times:");
  });
  });
  }

这里测试的是Flutter默认的应用程序,Codemagic-Demo。

运行测试

在运行测试之前需要连接一个真机或模拟器。准备好这后,通过下面命令运行测试。

 $ flutter driver --target test_driver/main_test.dart

运行测试时会发生以下情况:

你可能感兴趣的:(flutter,ui)