Flutter UI 测试

   跨平台移动App开发框架的测试通常是具有挑战的,因为测试需要跨多个平台。Flutter提供了丰富的测试功能。包括单元测试、小部件测试和集成测试。在标准的测试金字塔模型中,集成测试是在单元测试之后进行的,开发测试多个模块的集成。在Flutter中,集成测试等同于UI测试。在Flutter中UI测试被称作集成测试。但是在这里我们使用UI测试。

  如何在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 driver连接App到 http://127.0.0.1:50669/

  开始接收驱动程序的命令并执行相应的行动

  一次测试结束连接断开

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值