如何将参数传递给flutter integration_test?
How to pass parameters into flutter integration_test?
我之前使用 flutter_driver
进行集成测试,并且能够通过主机的环境变量将参数插入到测试中,因为测试是来自主机的 运行。
对于另一个项目,我现在使用 integration_test 包。
测试不再 运行 在主机上,而是在目标上,因此当尝试通过环境变量传递参数时,测试无法获取它们。
我看到了 https://github.com/flutter/flutter/issues/76852,我认为这会有所帮助,但现在还有其他选择吗?
如果您使用 integration_test 包,测试代码可以在 运行 您的应用程序之前设置全局变量,并从使用 --dart-define
[= 指定的环境中提取它们14=]
例如:
// In main.dart
var environment = 'production';
void main() {
if (environment == 'development') {
// setup configuration for you application
}
runApp(const MyApp());
}
// In your integration_test.dart
import 'package:my_app/main.dart' as app;
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
setUpAll(() {
var testingEnvironment = const String.fromEnvironment('TESTING_ENVIRONMENT');
if (testingEnvironment != null) {
app.environment = testingEnvironment;
}
});
testWidgets('my test', (WidgetTester tester) async {
app.main();
await tester.pumpAndSettle();
// Perform your test
});
}
然后使用命令行flutter test integration_test.dart --dart-define TESTING_ENVIRONMENT=development
或者,您可以直接在您的应用代码中从 String.fromEnvironment
中提取它们。
我在 android 模拟器上遇到了同样的问题 运行 integration_tests。查看 bool.fromEnvironment()
的文档显示:
/// This constructor is only guaranteed to work when invoked as `const`.
/// It may work as a non-constant invocation on some platforms ...
所以这对我用 android:
测试有用
const skipFirst = bool.fromEnvironment('SKIP_FIRST');
我之前使用 flutter_driver
进行集成测试,并且能够通过主机的环境变量将参数插入到测试中,因为测试是来自主机的 运行。
对于另一个项目,我现在使用 integration_test 包。
测试不再 运行 在主机上,而是在目标上,因此当尝试通过环境变量传递参数时,测试无法获取它们。
我看到了 https://github.com/flutter/flutter/issues/76852,我认为这会有所帮助,但现在还有其他选择吗?
如果您使用 integration_test 包,测试代码可以在 运行 您的应用程序之前设置全局变量,并从使用 --dart-define
[= 指定的环境中提取它们14=]
例如:
// In main.dart
var environment = 'production';
void main() {
if (environment == 'development') {
// setup configuration for you application
}
runApp(const MyApp());
}
// In your integration_test.dart
import 'package:my_app/main.dart' as app;
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
setUpAll(() {
var testingEnvironment = const String.fromEnvironment('TESTING_ENVIRONMENT');
if (testingEnvironment != null) {
app.environment = testingEnvironment;
}
});
testWidgets('my test', (WidgetTester tester) async {
app.main();
await tester.pumpAndSettle();
// Perform your test
});
}
然后使用命令行flutter test integration_test.dart --dart-define TESTING_ENVIRONMENT=development
或者,您可以直接在您的应用代码中从 String.fromEnvironment
中提取它们。
我在 android 模拟器上遇到了同样的问题 运行 integration_tests。查看 bool.fromEnvironment()
的文档显示:
/// This constructor is only guaranteed to work when invoked as `const`.
/// It may work as a non-constant invocation on some platforms ...
所以这对我用 android:
测试有用const skipFirst = bool.fromEnvironment('SKIP_FIRST');