2

我在 XCUITest 框架中为一个相当大的应用程序(该应用程序的存在时间比我在这家公司的几年)编写了许多测试。在我的笔记本电脑和其他工程师的笔记本电脑上,所有测试都始终如一地通过。

在 Bitrise 上运行测试时,第一个 UI 测试每次在设置阶段都会失败,并显示以下消息:

testFixtureAttachment,UI 测试失败 - 无法执行 AX 操作来监视(应用程序)的动画,错误:错误 -25204 执行 AXAction 2043

其他测试通常会通过,但有时会因错误而失败,例如:

UI 测试失败 - 无法执行 AX 操作以监视(应用程序)的事件循环,错误:错误 -25204 执行 AXAction 2042

UI 测试失败 - 无法滚动到可见(通过 AX 操作)TextField 0x7fe800f9fa20:特征:...错误:错误 -25204 执行 AXAction 2003

我该如何解决这个问题,以便至少我的第一次测试不会在设置时总是失败?

4

2 回答 2

3

根据 XCUITest 团队的反馈,发生这种情况是因为模拟器 CPU 不足,并且 AX Action 在启动应用程序时超时。通过使用电源管理来降低我的 CPU,我能够在我自己的机器上重现这个(通常不会出现故障)。

在 Bitrise 中增加 CPU 分配是显而易见的解决方案。但是,还有另一个奇怪的解决方案!

在测试的设置功能之前,我有以下行:

let app = XCUIApplication()

这允许我调用各种测试app.而不是更长、更完整的语法。

发现删除此行可以防止错误发生。这是通过此 Apple Developer 论坛主题找到的:

https://forums.developer.apple.com/thread/4472

所以......希望可以为其他人解决这个问题,但它为我解决了这个问题。

于 2016-06-16T18:30:49.423 回答
1

这通常与较慢的环境有关。Xcode 并不能很好地保证在较旧和较慢的机器上执行 UI 测试。这适用于虚拟化环境(例如 Bitrise.io 使用的那个),以及旧机器或具有 HDD 存储而不是 SSD 的机器。

根据您的项目,有一些解决方法可能会或可能不会有帮助。您可以在以下位置找到相关问题和可能解决方案的列表:https ://bitrise-io.github.io/devcenter/ios/known-xcode-issues/ 。

从链接中,在大多数情况下有效的解决方案:

  • 尝试另一个 Xcode 版本。
  • 尝试另一个模拟器设备(例如,不要在“iPhone 6”中运行测试,而是使用“iPhone 6s Plus”尝试)
  • 一些用户成功地将测试拆分为多个方案,并通过单独的测试步骤分别运行这些方案。
  • 其他人报告说,如果你在 app.launch() 之后添加延迟,它可以为 Xcode / iOS 模拟器留出足够的时间来初始化辅助功能标签,以便 UI 测试可以通过辅助功能标签正确找到元素。

相关 StackOverflow 和其他论坛链接:

于 2016-06-07T15:27:06.290 回答