如何自动化 Flutter Integration 测试命令?

How to automate Flutter Integration testing command?

我已经阅读并尝试过使用 flutter 进行集成测试。我在这里遵循了本指南...

https://flutter.io/docs/cookbook/testing/integration

现在,对于 运行 集成测试,我必须输入以下命令:

flutter drive --target=test_driver/app.dart

我的问题是,有没有办法在 android studio 中自动执行此操作,这样我就不必手动输入命令。我宁愿只单击一个按钮并 运行 集成测试,而不是一遍又一遍地键入命令。

我是 flutter 的新手,所以任何建议都将不胜感激。提前致谢。

不确定您是否找到问题的答案,但我将在此处 post 解决方案。希望对你有帮助。

  1. 在 Android Studio 中,打开 run/edit configuration dialog 和 select Edit Configurations,如下所示:

  1. 单击 + 按钮和 select Dart Command Line App 配置。

  1. 为配置命名(例如:integration.dart)和select以下:

dart文件:集成测试的dart文件路径。 (例如:app_test.dart)

工作目录:项目的根路径。

环境变量:单击该字段最右侧的文件夹图标并创建新的环境变量,如下所示:

请注意,http url 在您的情况下会有所不同。为了找出这一点,运行 终端中的 flutter 命令并注意控制台中显示的 observatory url。就我而言,它在下面:

flutter: Observatory listening on http://127.0.0.1:51150/

将其替换为您的,然后单击“确定”。

正确完成上述步骤并运行 integration.dart 配置后,您应该能够运行 来自Android Studio 的命令并在IDE.

我正在使用 Visual Studio 并且我已经创建了一个脚本文件 integration_test.sh

flutter drive \
  --driver=test_driver/integration_test.dart \
  --target=integration_test/login_test.dart

flutter drive \
  --driver=test_driver/integration_test.dart \
  --target=integration_test/register_test.dart

..

执行测试。我只是运行bash scripts/integration_test.sh

我也在尝试添加 launch.jsontask.json 仍然无法弄清楚。一旦一切正常,我将更新答案。

launch.json

代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Flutter Dev",
            "program": "lib/main_dev.dart",
            "request": "launch",
            "type": "dart"
        },

        ...

        {
            "name": "Flutter Integration Test",
            "preLaunchTask": "IntegrationTest",
        }
    ]
}

task.json

的代码
{
    "version": "0.2.0",
    "tasks":[
        {
            "taskName": "IntegrationTest",
            "command": "scripts/integration_test.sh",
            "isShellCommand": true
        }
    ]
}

使用“Dart 命令行应用程序”为 flutter 驱动设置 运行 配置需要 VM_SERVICE_URL 环境。如果你想让 flutter drive 动态创建自己的 VM 实例,你可以在 Android Studio 中将 flutter drive 命令配置为 'External Tool',并将创建的外部工具配置为 运行 'Before launch'。注意'Program'上设置的路径指向Flutter SDK。

您可以查看此 GitHub thread 了解更多详情。