12

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

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

如何将环境变量传递给颤振驱动程序测试

4

1 回答 1

2

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

虽然在传统的控制台命令意义上不支持命令行参数,但您可以使用--dart-define将变量传递给主测试类。(尽管如果您正在测试桌面平台,您可以使用-aFlutter Driver 的参数)

在幕后,它使用环境变量来传递参数。

请参阅如何在 Flutter/Dart 中将参数从命令行传递到 main?更多细节。

如何将参数传递给每个测试?

在测试中,环境变量是不可用的,所以我们可以使用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"
于 2020-12-01T10:57:24.077 回答