【问题标题】:FlutterDriver: Flutter Driver extension is taking a long time to become availableFlutterDriver:Flutter Driver 扩展需要很长时间才能可用
【发布时间】:2019-10-22 15:37:30
【问题描述】:

我正在尝试按照网页中提供的说明运行 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
    });
  });
}

正如这里评论的那样:#17184,它可以在 main.dart 中引入 enableFlutterDriverExtension() 来修复,但我不想在应用程序代码中编写任何额外的东西。

是否有可能使用其他方法来修复它?

谢谢

【问题讨论】:

  • 我刚刚在 iOS 上运行了测试,没有收到任何超时错误,也没有发现您的测试设置有任何问题。检查此链接,其中有人提到的问题与 xcode 的构建配置有关。 github.com/flutter/flutter/issues/26968 。希望对您有所帮助。
  • 谢谢!!另一个问题的修复对我来说是一个更好的解决方法!再次感谢:)

标签: ios flutter timeout driver flutter-test


【解决方案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 中提到的解决方法(每次检查 cmets)解决了该问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 2013-10-11
    • 2012-12-04
    • 2012-12-03
    • 2014-07-21
    • 2019-10-26
    • 2012-06-24
    • 2013-11-15
    相关资源
    最近更新 更多