我的应用程序是基本计数器,带有用于 UI 自动化的 FlutterDriver。我的难题是当我尝试运行测试时,它告诉我需要指定连接或设置 VM_SERVICE_URL
错误:
DriverError:无法确定连接到应用程序的 URL。应该设置 VM_SERVICE_URL 环境变量,或者应该为 FlutterDriver.connect() 方法提供显式 URL。
我已经尝试了几件事。
- 使用 FlutterDriver.connect();
- 在终端 (MacOS) 中设置 VM_SERVICE_URL
- 设置 Dart 命令行以包含带有值的 VM_SERVICE_URL
我取得的最大成功是使用下面的代码。通过将 enableFlutterDriverExtension 添加到 lib/main.dart,然后执行 lib/main.dart,我可以将 ws://127.0.0.1 连接复制/粘贴到 test/my_test.dart 中。这使我能够成功运行我的测试,但这不是一个理想的过程。
有没有办法自动拉入连接字符串?
为什么 Platform.environment['VM_SERVICE_URL'] 尽管我设置了它,但总是返回 null?
lib/main.dart
void main() {
enableFlutterDriverExtension();
runApp(const MyApp());
}
测试/main_app.dart
void main() {
// enableFlutterDriverExtension();
MainApp.main();
MyTest.main();
}
测试/my_test.dart
void main() {
FlutterDriver? driver;
dynamic DartVmServiceUrl;
DartVmServiceUrl ??= Platform.environment['VM_SERVICE_URL'];
print('VM_SERVICE_URL:\t${DartVmServiceUrl}');
String vmServURL = 'ws://127.0.0.1:59488/WK8KTNVXXOo=/ws';
setUpAll( () async {
driver = await FlutterDriver.connect(dartVmServiceUrl: vmServURL);
});
tearDownAll( () {
driver?.close();
});
test('Push Button',() async {
var pushMeButton = find.byValueKey('IncrementButton');
await driver!.tap(pushMeButton);
} );
}