【问题标题】:Flutter Driver - can we pass command line arguments to flutter driver testsFlutter Driver - 我们可以将命令行参数传递给 Flutter 驱动程序测试吗
【发布时间】:2020-04-15 02:46:22
【问题描述】:

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

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

How to pass an environment variable to a flutter driver test

【问题讨论】:

  • 嗨,你解决了吗?

标签: command-line-arguments flutterdriver


【解决方案1】:

如何将参数传递给测试应用程序?

虽然在传统的控制台命令意义上不支持命令行参数,但您可以使用--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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多