Flutter UI 测试
在Flutter中,UI测试被称作集成测试。Flutter的集成测试在一个单独的环境运行,可以运行在真实的设备或者模拟器上面。在标准的测试金字塔模型中,集成测试是在单元测试之后进行的,开发测试多个模块的集成。Flutter UI测试无法访问Flutter应用程序的数据或API,这给Flutter UI测试带来了额外的挑战。一个是应用程序文件main.dart,另一个是用于测试应用程序的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/
开始接收驱动程序的命令并执行相应的行动
一次测试结束连接断开

总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
更多推荐


所有评论(0)