我正在尝试按照网页中提供的说明进行Flutter集成测试:https://flutter.dev/docs/cookbook/testing/integration/introduction,但是当尝试使用iOS设备执行操作时,它总是会失败,并且FlutterDriver超时,但是如果我正在执行使用Android设备运行的同一段代码。
执行的命令是:
flutter driver --target=test_driver/app.dart
和(仅在iOS中),显示的错误如下:
...
flutter: Observatory listening on http://127.0.0.1:49605/Jh_J7boSKBk=/
Installing and launching... 22.5s
[info ] FlutterDriver: Connecting to Flutter application at http://127.0.0.1:1043/Jh_J7boSKBk=/
[trace] FlutterDriver: Isolate found with number: 589047572
[trace] FlutterDriver: Isolate is paused at start.
[trace] FlutterDriver: Attempting to resume isolate
[trace] FlutterDriver: Waiting for service extension
flutter: main dev
[warning] FlutterDriver: Flutter Driver extension is taking a long time to become available. Ensure your test app (often "lib/main.dart") imports "package:flutter_driver/driver_extension.dart" and calls enableFlutterDriverExtension() as the first call in main().
在iOS中执行时,它似乎完全忽略了指定的目标,并试图直接运行lib / main.dart文件,但是,为什么?
我按照以下网页说明的意思是使用2个文件进行测试: test_driver / app.dart和test_driver / app_test.dart
test_driver / app.dart
import 'package:flutter_driver/driver_extension.dart';
import 'package:my_app/main.dart' as app;
void main() async {
// This line enables the extension
await enableFlutterDriverExtension();
// Call the `main()` function of your app or call `runApp` with any widget you
// are interested in testing.
await app.main();
}
test_driver / app_test.dart
import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';
void main() {
group('end-to-end test', () {
FlutterDriver driver;
setUpAll(() async {
// Connect to a running Flutter application instance.
driver = await FlutterDriver.connect();
});
tearDownAll(() async {
if (driver != null)
driver.close();
});
test('whatever', () async {
//whatever
});
});
}
正如在这里{@ {3}}所评论的那样,可以通过在main.dart内引入enableFlutterDriverExtension()进行修复,但是我不想在应用程序代码内写任何多余的东西。
是否有可能使用其他方法对其进行修复?
谢谢
答案 0 :(得分:1)
我已经按照 docs for writing integration tests 上的步骤操作,它在 Flutter stable(版本 1.22.5)和 master(版本 1.26.0-2.0.pre.281)频道上都可以正常工作。虽然 docs 中的命令演示了 flutter drive
的使用,但在我的测试中使用 flutter driver
似乎也运行良好。
暂且不说,即使我无法在本地复制该问题,似乎该问题已通过按照 GitHub issue thread 中提到的解决方法解决,每次检查评论。