# Unit tests
lane :tests do
clear_derived_data
scan(
workspace: "AppTest.xcworkspace",
devices: ["iPhone 8"], # it can be with the iPhone that has your VM
force_quit_simulator: true,
reset_simulator: true,
reinstall_app: true,
scheme: "AppTest"
)
end
7条答案
按热度按时间yhqotfr81#
我在Xcode 11.3中运行简单的UITest时遇到了匹配问题。为了让它工作,我必须首先粘贴:
XCUIApplication().activate()
或XCUIApplication().launch()
。wi3ka0sx2#
我在Xcode 11中也遇到过同样的问题,我意识到当停止测试时(或者测试由于某种原因崩溃),测试运行者并没有被杀死。第二次运行测试会产生一个新的测试运行者,在这一点上,我有两个运行者试图与同一个应用程序交互,导致这个非常奇怪的错误。
为了证明我做了以下事情:
1.创建了在文本视图中键入长文本的UI测试
1.运行测试,当文本视图中有几个句子时手动停止测试
1.在模拟器中手动打开应用程序(不是通过运行测试)
1.观察到随机字符出现在文本视图中,即使没有运行任何测试。
解决方法是退出并重新打开模拟器,以确保所有进程都被杀死。希望这能解决您的问题
eqoofvh93#
我在Xcode 11.1中不时遇到这个问题。我观察到这个问题发生在等待UI元素时,特别是在测试过程中显示Web视图时。当问题发生时,我正在使用
XCUIElement.waitForExistence(timeout:)
或NSPredicate(format: "exists == true")
的期望。当我更改为NSPredicate(format: "hittable == true")
的期望时,问题似乎消失了,但我不知道为什么。这两个属性之间的区别是hittable
只检测屏幕上的元素,而exists
检测屏幕外的元素,如表视图的屏幕外单元格。r7s23pms4#
我使用不同的机器。我的旧Mac更经常遇到这个错误。我猜是旧Mac没有正确运行某些XCUITests所需的内存。
n7taea2i5#
我在Xcode 11上遇到了类似的问题。
事实证明,在此之前,它被允许在许多页面中具有相同的可访问性标识符。
但是现在使用新的模态表示样式,您应该在页面中使用不同的标识符以避免冲突。
yk9xbfzb6#
如果您使用的是fastlane,则可以使用以下车道轻松解决:
理论上,您必须重置模拟器并重新安装应用程序。
快乐编码
tcbh2hod7#
对我来说,调用
activate()
两次是解决方案。这不是我第一次遇到问题。我有其他测试需要调用应用程序回到前台,调用activate
一次是不够的。听起来很奇怪,我知道,但给予看。