在Flutter应用程序中,我们有多个integration tests。
我通过发布来逐一运行它们:
flutter drive --target=test_driver/screenshot.dart
但是我似乎不知道如何运行integration test
文件夹中的所有test_driver
吗?
答案 0 :(得分:-1)
有了组,但这仅解决了一半问题,像平常一样让您的app_test.dart成为一些分组测试的主要方法
Future<void> main() async {
group(
'Registration and password',
() {
setUp(() async {
await versionTest(driver, tester, reporter);
});
test('Register Account', () async {
await testRegisterAccount(driver, tester, reporter);
});
test('Register Account 2', () async {
await testRegisterAccount2(driver, tester, reporter);
});
tearDown(() async {
await driver.requestData('go-back');
});
},
timeout: const Timeout(
Duration(minutes: 5),
),
);
然后我们有一个app.dart,它创建了包装在测试应用中的应用。我们主要是为了测试可检查应用程序版本的初始屏幕,因此我们需要在应用程序真正启动之前进行了解
void main() {
makeTestApp();
}
makeTestApp会执行所有正常的工作,例如enableFlutterDriverExtensions等,但它也是我们使用自定义启动器构建应用程序的地方,启动器只是一个空白页面,带有一个用于启动应用程序的按钮,每个测试应在此处开始和结束,然后返回更难的是,您可以看到我们使用了FlutterDriverExtensions处理程序消息-driver.requestData('go-back')
Widget _buildHome(BuildContext context) {
return Scaffold(
child: Center(
child: GestureDetector(
onTap: () {
Navigator.of(context).pushReplacementNamed('/authentication');
},
child: SizedBox(
height: 200,
width: 200,
child: Image.asset(
'assets/images/logo.png',
fit: BoxFit.cover,
),
),
),
),
);
}
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]).then((_) {
runApp(App(
launcher: (context) => _buildHome(context),
));
});
现在您可以使用类似的方式启动应用程序
flutter run --flavor dev --observatory-port 8888 --disable-service-auth-codes --no-hot test_driver/app.dart
,当应用运行时,它将显示我们的启动器,等待您使用dart库中的代码镜头工具运行测试,
答案 1 :(得分:-5)
一种方法是在Flutter应用的根目录中打开一个终端窗口,然后输入flutter test
请参阅:https://github.com/flutter/flutter/wiki/Running-and-writing-tests#running-unit-tests