gpt4 book ai didi

FlutterDriver.Connect 需要 VM_SERVICE_URL 还是字符串?

转载 作者:行者123 更新时间:2023-12-05 05:53:50 25 4
gpt4 key购买 nike

我的应用程序是基本计数器,带有用于 UI 自动化的 FlutterDriver。我的难题是当我尝试运行测试时,它告诉我需要指定连接或设置 VM_SERVICE_URL

错误:

DriverError: Could not determine URL to connect to application. Eitherthe VM_SERVICE_URL environment variable should be set, or an explicitURL should be provided to the FlutterDriver.connect() method.

我已经尝试了一些东西。

  • 使用 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);

} );


}

最佳答案

你必须移动你在下面看到的特定文件夹中的文件,然后尝试从终​​端运行

flutter drive \
--driver=test/my_test.dart \
--target=test_driver/test_driver.dart

在你的 lib/main.dart 中你不需要 enableFlutterDriverExtension(); 因为它已经链接到你在 test_driver.dart 中的 main()

你的 main in test_driver/test_driver.dart 应该是这样的:

import 'package:{here}/main.dart' as app; // insert here your main app
import 'package:flutter_driver/driver_extension.dart';

void main() {
enableFlutterDriverExtension();
app.main();
}

你的 my_test.dart 应该是这样的:

import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';

void main() {
late FlutterDriver driver;

setUpAll(() async {
driver = await FlutterDriver.connect();
});

tearDownAll(() {
driver.close();
});

test('check flutter driver health', () async {
Health health = await driver.checkHealth();
print(health.status);
});
}

请注意使用正确的包以避免此错误。

Error: Not found: 'dart:ui'import 'dart:ui';

关于FlutterDriver.Connect 需要 VM_SERVICE_URL 还是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69817166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com