Драйвер флаттера - можем ли мы передать аргументы командной строки в тесты драйвера флаттера
Я хочу передать тестовую среду в качестве аргумента командной строки для моего теста интеграции драйвера флаттера. Является ли это возможным?
Я читал в посте ниже, что мы можем использовать переменные окружения в тестах драйверов флаттера, но меня больше интересовали аргументы командной строки.
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"