我有一个适用于Android的移动应用程序,其中包含多个页面,目前正在尝试为它编写简单的集成测试...
问题是我的应用程序只使用内部 Android 后退手势,我没有后退按钮或类似的东西。
是否有可能以某种方式告诉FlutterDriver
回到一页?(模拟安卓内部后退按钮?像这样:
driver.goPageBack()
非常感谢。:)
在活动代码中尝试此操作。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.YOUR_ACTIVITY);
assert getSupportActionBar() != null; //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //show back button
}
@Override
public boolean onSupportNavigateUp() {
finish();
return true;
}
在 Flutter 存储库中,有一个测试通过平台通道发送消息来模拟硬件后退按钮,如下所示:
final ByteData message = const JSONMethodCodec().encodeMethodCall(const MethodCall('popRoute'));
await ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage('flutter/navigation', message, (_) { });
https://github.com/flutter/flutter/blob/6688e63f68ebba0919a5fe3c8f8432bd8a65f81b/packages/flutter/test/widgets/router_test.dart#L725-L726
我能找到的最接近的东西是一个后退按钮拦截器的包,它有一个方法BackButtonInterceptor.popRoute()
用于模拟后退按钮按下的测试:https://pub.dev/packages/back_button_interceptor