【问题标题】:Flutter Integration Testing- How to go back to previous screen when no back button available on screenFlutter 集成测试 - 当屏幕上没有可用的后退按钮时如何返回到上一个屏幕
【发布时间】:2020-03-21 12:17:16
【问题描述】:

屏幕上没有返回按钮时如何返回上一个屏幕? 附加信息:我正在尝试自动化 Flutter 应用程序的集成测试。屏幕上没有后退按钮,我可以使用它来返回屏幕。 附加信息:我正在编写集成测试,同样我需要返回上一个屏幕。由于设计原因,屏幕上没有后退按钮,我只需要通过脚本来完成。

【问题讨论】:

  • 你不会回答,是为了开发预期还是测试?
  • 测试视角

标签: flutter dart flutter-test


【解决方案1】:

嗯,可能有点晚了,但是有两种可能的方法来实现这一点:

final backButton = find.byTooltip('Back');

await driver.tap(backButton);

或:

await driver.tap(find.pageBack());

【讨论】:

    【解决方案2】:

    如果测试的目的也是强调和验证WillPopScope 回调,可以使用以下方法:

    final dynamic widgetsAppState = _._tester.state(find.byType(WidgetsApp));
    await widgetsAppState.didPopRoute();
    

    这个在Flutter官方仓库中用于测试:https://github.com/flutter/flutter/blob/master/packages/flutter/test/material/will_pop_test.dart

    请注意,这种方法也适用于在 Android 上模拟 按下后退按钮

    【讨论】:

      【解决方案3】:

      你可以像 ios 提供的那样使用

      theme: ThemeData(
      pageTransitionsTheme: PageTransitionsTheme(
        builders: {
          TargetPlatform.android: CupertinoPageTransitionsBuilder(),
          TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
        }
       )
      ),
      

      【讨论】:

        【解决方案4】:

        这对我的动画包中的 OpenContainers 有用:

          final NavigatorState navigator = tester.state(find.byType(Navigator));
          navigator.pop();
          await tester.pump();
        

        在flutter包的测试中使用:

        https://github.com/flutter/packages/blob/63040337424f345452a5e07632774e6585329ac0/packages/animations/test/open_container_test.dart#L234

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-30
          • 2020-05-29
          • 2011-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多