Драйвер флаттера - можем ли мы передать аргументы командной строки в тесты драйвера флаттера

Я хочу передать тестовую среду в качестве аргумента командной строки для моего теста интеграции драйвера флаттера. Является ли это возможным?

Я читал в посте ниже, что мы можем использовать переменные окружения в тестах драйверов флаттера, но меня больше интересовали аргументы командной строки.

Как передать переменную окружения в тест драйвера флаттера

0 ответов

Как передать аргументы в тестовое приложение?

Хотя аргументы командной строки не поддерживаются в традиционном смысле консольных команд, вы можете использовать --dart-defineдля передачи переменных в основной тестовый класс. (Хотя, если вы тестируете настольную платформу, вы можете использовать -a аргумент для Flutter Driver)

Под покровом он использует переменные среды для передачи аргументов.

См. Как передать аргументы из командной строки в главное во Flutter/Dart? Больше подробностей.

Как передать аргументы каждому тесту?

Изнутри теста переменные среды недоступны, поэтому мы можем использовать DataHandler расширения драйвера Flutter для получения данных.

В вашем основном тестовом приложении, которое использует драйвер Flutter для запуска теста, вы можете настроить 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"
Другие вопросы по тегам