0

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

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

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

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

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

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

4

1 回答 1

1

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

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

确保你有一个高规格的 Mac 作为你的 CI 服务器——人们经常犯错误使用基本规格的 Mac Mini,它在运行测试时非常慢。更多的权力可以帮助很多。

于 2016-10-26T06:46:50.153 回答