问题标签 [flutterdriver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1425 浏览

flutter - Flutter 小部件与 Flutter 驱动程序

我正在为一个用Flutter. 我按照这本 Flutter Cookbook测试 Flutter 应用程序,学习如何编写小部件和集成测试。

本教程完美运行,但我仍然坚持自己的集成测试。

为了简化,假设我有一个应用程序,只包含一个TextField

我想为这个应用程序编写一个测试。例如,我想测试以下场景:

  • 打开应用程序
  • 检查是否TextField为空
  • 选择TextField
  • 输入“你好,世界!”
  • 检查是否TextField包含“你好,世界!”

我写了以下Widget测试,效果很好:

该测试通过了,但我想编写一个集成测试,或多或少做相同的事情,以便能够在真实设备上对其进行测试。事实上,如果这个 Widget 测试通过,它可能会在所有设备上通过。但在我的应用程序中,我有更复杂的小部件和它们之间的交互,我希望能够在 Android 和 iOS 上启动测试。

我尝试使用 编写集成测试Flutter driver,但在文档和示例中没有找到我想要的。

如何检查Widget属性,以验证我的应用程序是否按预期运行?

我写了以下示例:

Flutter Cookbook 教程解释了如何通过 Text 检索对象,这将有助于检查 Text 是否存在,但例如是否可以检查 Container 颜色是否为红色?小部件和集成测试之间的限制在哪里?

编写 Widget 测试非常简单,但我没有找到很多关于如何使用 Flutter 驱动程序编写更复杂的集成测试的示例或文档。

0 投票
0 回答
25 浏览

flutter - 用颤振测试时有没有办法触摸屏幕?

偏移量中有一个名为 dx,dy 的变量,有没有办法使用这个变量来触摸特定位置?还是有其他方法?我想触摸整个屏幕上的任何屏幕。

0 投票
1 回答
45 浏览

flutter - VmService时间戳与flutter驱动时间线事件时间戳不对应

我在我做的飞镖测试

每个测试运行大约 30 秒。出于某种原因,在测试之后我有类似的东西

在时间轴第一个事件 timestampMicros 是

还:

我使用 vmsStartTest 和 vmsEndTest 过滤掉与每个测试相关的事件,并且由于此类问题,我错过了时间线上与测试相关的所有事件。请帮助我了解为什么会发生这种情况以及如何处理?

0 投票
1 回答
902 浏览

flutterdriver - Flutter Driver - 如何知道哪个“waitFor”命令失败了?

我正在使用 Flutter Driver 为我们的应用程序编写一些集成测试,并且我正在尝试使用该waitFor命令等到元素出现。

该命令运行良好并等待我的元素,或者在找不到它时失败。我的问题是,当它失败时,控制台中的日志不会告诉我哪些waitFor调用失败了。

例如,我运行以下代码来等待 myButton1 和 myButton2:

但是,当我运行测试时,它们会失败并显示以下错误消息:

此信息不会告诉我是 myButton1 还是 myButton2 失败了。它也没有从我的测试中给我任何代码行来指示哪些行实际上有错误。

对此有什么想法吗?

0 投票
1 回答
266 浏览

ios - 运行 Flutter Driver 测试时如何禁用推送通知提示

我使用 Flutter Driver 运行我的 e2e 测试。我使用的典型命令是:

但是,在添加推送通知支持后,我的测试在启动时超时,因为显示了推送通知提示。运行 Flutter Driver 测试时如何授予访问权限或跳过提示?

0 投票
1 回答
228 浏览

flutter - 访问颤振测试导致 tearDownAll

我需要在tearDownAll回调中访问测试结果。我想检查执行期间是否有任何测试失败。

我研究了InvokerDeclarer、和fileEngine等类。似乎这是我需要的代码。LiveTestControllertest_core.dart

不幸的engine是,无法从外部访问。我也没有找到用于检查test_core库中测试结果的 API。

有没有办法检查以前的任何测试是否失败?我想在测试组的a tearDownAll()or函数中使用它。test()

0 投票
1 回答
1062 浏览

flutter - Flutter 集成测试和 Gitlab CI/CD

我正在尝试根据本教程使用 Fastlane 和 GitLab 为我的 Flutter 应用程序设置 CI/CD ,但是我在使用 Flutter 驱动程序自动化 Flutter 集成测试时遇到了一些困难。我遇到的问题是,当所有测试都成功完成时,应用程序实例保持活动状态(例如,没有退出代码),这意味着 Gitlab 阶段没有进一步的脚本被执行。例如,当测试失败时,我收到的消息是:

我收到退出代码 255,我假设 Gitlab Runner 会将其识别为失败并停止执行进一步的阶段(构建和部署)?

但是,如果测试通过,我得到的只是: 00:05 +3: All tests passed!,并且应用程序似乎仍在运行。

我正在使用tearDownAll函数,但它似乎没有帮助:

添加exit(0)exit(255)输入tearDownAll确实正确关闭了实例,但是我现在可以读取测试是否通过/失败,因此我可以将退出代码设置为 0/255。之前是否有人处理过集成测试和 GitLab CI/CD,或者遇到过 Flutter Driver 的类似问题?

0 投票
1 回答
325 浏览

flutter - 如何使用 Flutter 测试驱动程序从进度对话框中获取文本

我有一个颤振应用程序。目前我正在尝试使用测试驱动程序进行自动化集成测试。

这就是我想要做的。

我想知道是否有可能获得第二步的布尔值。我试图做这样的方法:

但我无法用上述方法做到这一点。

此进度对话框包含文本“正在加载...”,但我也无法使用 find.text 执行此操作。

有没有办法正确地做到这一点?

0 投票
2 回答
418 浏览

flutter - 查找没有键的元素

我仍然是在测试中使用颤振驱动程序的新手,但据我所知,我们可以用来定位/识别元素的标识符很少,比如按文本、按类型等

但问题是,我要测试的应用程序没有我可以用来定位它们的标识符(如果我错了,请纠正我).. 应用程序的小部件代码如下所示

该小部件在扩展的类上的位置StatefulWidget

如何在我的测试脚本中找到该图标并单击它?我可以使用这样的东西吗?我应该使用什么类型的取景器?(byValueKey?bySemanticLabel?byType?还是什么?)

0 投票
1 回答
369 浏览

flutter - Flutter 驱动程序处理最小化的应用程序

我正在为我的颤振应用程序制作一些测试场景。其中一项功能是“关于我们”部分。当点击“关于我们”时,用户被重定向到网页并且应用程序被最小化。这是一个问题,因为测试场景在这个地方失败了。Flutter 无法找到任何组件,并且在此特定错误上失败

是否有任何可能的解决方案可以从后台最小化应用程序?

我试图使用默认的颤振钩子,但没有正确的结果。

这些是我使用的文件和方法

和 LoginPage 中的方法