Man*_*dha 11 command-line-arguments flutterdriver
我想将测试环境作为命令行参数传递给我的 flutter 驱动程序集成测试。是否可以 ?
我确实在下面的帖子中读到我们可以在 Flutter 驱动程序测试中使用环境变量。但我对命令行参数更感兴趣。
如何向测试应用程序传递参数?
虽然传统控制台命令意义上不支持命令行参数,但您可以使用--dart-define它将变量传递给主测试类。(尽管如果您正在测试桌面平台,您可以使用-aFlutter Driver 的参数)
在幕后,它使用环境变量来传递参数。
请参阅如何在 Flutter/Dart 中将参数从命令行传递到 main?更多细节。
如何向每个测试传递参数?
在测试中,环境变量不可用,因此我们可以使用Flutter驱动扩展的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');
}
Run Code Online (Sandbox Code Playgroud)
现在,从您的个人测试中,您可以调用 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");
}
Run Code Online (Sandbox Code Playgroud)
像这样开始测试:
flutter drive --profile --target ./test_driver/app.dart --dart-define="tests=home_page" --dart-define="sample_data=ABC;XYZ"
Run Code Online (Sandbox Code Playgroud)