FlutterDriver: Flutter Driver扩展需要很长时间才能变为可用状态。

9

我试图按照网页提供的说明运行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()来解决问题,但我宁愿不在应用程序代码中编写任何额外的内容。

有没有可能使用其他方法来解决这个问题?

谢谢


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

2
我已经按照写有“撰写集成测试”的文档步骤做了测试,无论使用Flutter稳定版(版本1.22.5)还是主干版本(版本1.26.0-2.0.pre.281),都没有问题。虽然在文档中的命令演示了如何使用“flutter drive”,但在我的测试中,使用“flutter driver”似乎也能正常运行。
除此之外,即使我无法在本地重现这个问题,根据评论检查,有人提到在GitHub issue thread中提到的解决方法似乎已经解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接