Dar*_*ath 7 integration-testing flutter
我为 Flutter 应用程序编写了一些集成测试,并且在测试期间需要在本地计算机上执行一些 shell 命令。
我知道我可以使用 执行这些命令Process.run()
,但在集成测试期间,该命令是在我的 Android 手机而不是本地计算机上执行的。
在集成测试期间,有什么方法可以在本地计算机上运行命令吗?
不知何故,使用 flutter 驱动程序,它可以在测试机器上运行进程。
就我而言,它是在运行颤振测试时打开深层链接。然后你就得到了上下文。
flutter drive \
--driver=test_driver/driver_tests/your_test.dart \
--target=test_driver/your_driver.dart
Run Code Online (Sandbox Code Playgroud)
你的驱动程序.dart:
import 'package:flutter_driver/driver_extension.dart';
import 'package:arriba/main.dart' as app;
void main() {
enableFlutterDriverExtension();
app.main();
}
Run Code Online (Sandbox Code Playgroud)
你的_test.dart:
import 'dart:io';
import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';
//!! DOES NOT RUN WITHOUT FLUTTER DRIVER MAIN !!
void main() {
late FlutterDriver driver;
const String shareLink = 'your_link.html';
setUpAll(() async {
driver = await FlutterDriver.connect();
});
tearDownAll(() async {
await driver.close();
});
test(
'starting deep link test',
() async {
driver.waitUntilFirstFrameRasterized();
await Process.run(
'adb',
[
'-d',
'shell',
'am',
'start',
'-a android.intent.action.VIEW',
'-c android.intent.category.BROWSABLE',
'-d $shareLink',
'YOUR PACKAGE NAME',
],
).then((result) {
stdout.write(result.stdout);
stderr.write(result.stderr);
});
},
timeout: const Timeout(Duration(seconds: 60)),
);
}
Run Code Online (Sandbox Code Playgroud)