command-line-arguments - Flutter Driver - 我们可以将命令行参数传递给 Flutter 驱动程序测试吗

标签 command-line-arguments flutterdriver

我想将测试环境作为命令行参数传递给我的颤振驱动程序集成测试。
是否可以 ?

我确实在下面的文章中读到我们可以在颤振驱动程序测试中使用环境变量。但我对命令行参数更感兴趣。

How to pass an environment variable to a flutter driver test

最佳答案

如何将参数传递给测试应用程序?
虽然在传统控制台命令意义上不支持命令行参数,但您可以使用 --dart-define将变量传递给主测试类。 (尽管如果您正在测试桌面平台,您可以使用 Flutter Driver 的 -a 参数)
在幕后,它使用环境变量来传递参数。
How do you pass arguments from command line to main in Flutter/Dart?更多细节。
如何将参数传递给每个测试?
在测试中,环境变量不可用,因此我们可以使用 Flutter Driver Extension 的 DataHandler获取数据。
在 Flutter Driver 用来启动测试的主测试应用程序中,您可以设置一个 DataHandler,如下所示:

void main() async {
  const testsString = String.fromEnvironment("tests");

  enableFlutterDriverExtension(handler: (request) async {
    String returnString;
    switch (request) {
      case "get_tests":
        {
          returnString = testsString;
          break;
        }
    }
    return returnString;
  });

  // Call main app
  app.e2e(configName: 'server-1');
}
现在,从您的个人测试中,您可以调用 DataHandler 并将“命令参数”作为数据请求:
// A test file
void main() async {
  // Connect to app
  FlutterDriver driver = await FlutterDriver.connect();
  String testsString = await config.driver.requestData("get_tests");
  print("Args: $testsString");
}
像这样开始测试:
flutter drive --profile  --target ./test_driver/app.dart  --dart-define="tests=home_page" --dart-define="sample_data=ABC;XYZ"

关于command-line-arguments - Flutter Driver - 我们可以将命令行参数传递给 Flutter 驱动程序测试吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59461642/

相关文章:

c++ - 获取命令行参数的大小/访问命令行参数中的单个字符

c++ - 在 C++ 中解析命令行参数?

带命令行参数的 Lua os.execute

java - 命令行参数未被正确识别

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

flutter - 使用 Flutter new integration_test 进行示例集成测试?

testing - 第一次编译 flutter_driver 时出错

FlutterDriver - 如何关闭 showDialog

android - Flutter Driver 测试超时

c: 程序执行问题