Swift 2.3 中的 XCTest 非常慢

XCTest in Swift 2.3 painfully slow

我在公司负责 iOS 自动化,并且在 XCTest 中与 Swift 一起工作。我的公司正在转换为 Swift 3,在此期间我已将我的测试转换为 Swift 2.3,直到我们完成转换。自动化已经减慢到不可接受的速度。太糟糕了,如果我们重新开始并选择框架 XCTest 将被取消资格。在这个过渡性 swift 转换中,我的测试时间增加了近三分之一。试图找出问题所在 link 很有帮助: Swift 3 Compile Time Incredibly Slow

我们将 final 应用到所有 class 模型来处理惰性变量,这使我们每次测试获得 6 秒的时间!不幸的是,这并没有使它恢复到原来的速度:(

我们这些移动自动化领域的人都知道使用@Joe Masilotti 推荐的 NSPredicate 是等待元素的最佳方式 https://whosebug.com/users/384110/joe-masilotti

我注释掉了一个使用包含 let existsPredicate = NSPredicate(format: "exists == true") 的自定义 func waitForElement () 的测试。同样的测试现在又多了 3 秒!所以一共9秒是可观的,可惜这还是没有回到原来的速度。我希望这能表达我对 swift 2.3 变得多么缓慢的看法。

我将尝试仅将测试目标转换为 swift 3,看看是否有帮助。我的理论是 Xcode 8 针对 swift 3 而不是 swift 2.3

进行了优化

我的问题是,是否有另一种方法可以在扩展中编写 NSpredicate / waitForElement 或 hittable 方法,而不会减慢我的测试速度?

iOS 10 模拟器比 iOS 9 模拟器占用更多资源。

如果您想 运行 更快地进行测试,请切换到 iOS 9 模拟器,但是您需要忍受较慢的测试才能在当前版本的 iOS.

确保你有一台高规格的 Mac 作为你的 CI 服务器——人们经常会错误地使用基本规格的 Mac Mini,这在速度上非常慢运行正在测试。更多的权力可以帮助很多。