如何在集成了 Flutter 模块的 Android 应用上运行 UI 测试?

Posted

技术标签:

【中文标题】如何在集成了 Flutter 模块的 Android 应用上运行 UI 测试?【英文标题】:How do I run UI tests on an Android App having a Flutter module integrated in it? 【发布时间】:2021-08-02 19:40:52 【问题描述】:

我有一个 android 应用程序,其中集成了一个单独的颤振模块。

所以当我的应用程序启动时,我会初始化 Flutter 引擎并将其加载到 Flutter 片段中。所以我所有的初始屏幕都是从颤振模块渲染的。

我试过了:

Appium 的颤振驱动程序- APK 安装并运行顺畅。但我无法访问任何颤振小部件。不确定是否会发生这种情况,因为颤振正在作为模块在片段中运行。

Flutter 测试驱动程序- 另外,由于 Flutter 模块被集成为一个单独的模块,因此使用测试驱动程序运行 Flutter 测试不起作用。

有什么方法可以对作为模块加载到 android 应用程序中的颤振代码运行 UI 测试?

代码结构类似于:

|- Android App
|-|-Flutter module
|-|-|- .Android module
|-|-|- .ios module
|-|-Android modules

【问题讨论】:

【参考方案1】:

确保enableFlutterDriverExtension()main.dart 类的第一行 并将键添加为值键

                   InkWell(
                      child: Container(
                        key: ValueKey("click_container"),
                        margin: const EdgeInsets.only(top: 32.0, bottom: 30.0),
                        padding: const EdgeInsets.only(
                            top: 15.0, bottom: 15.0, left: 40.0, right: 40.0),
                        decoration: BoxDecoration(
                            borderRadius: BorderRadius.circular(8.0),
                            color: Colors.white),
                        child: Text(
                         "Hello"
                        ),
                      )

【讨论】:

这只会使从我的颤振模块生成的应用程序进行 UI 测试。如果应用程序是从外部原生 android 模块创建的,这将不起作用。 你遇到了什么问题......我们尝试了它的工作 如果我的颤振代码打开了一些原生 android 活动,我将如何执行 UI 测试?是否可以使用颤振驱动程序?

以上是关于如何在集成了 Flutter 模块的 Android 应用上运行 UI 测试?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter笔记

Flutter笔记

Flutter混合开发实战

iOS(Swift版)Flutter集成关键步骤

在 Flutter 中,如何将 facebook 受众作为中介网络与 Admob 集成?

集成 Flutter 到现有项目,并实现使用单个 FlutterEngine 管理多个入口