【发布时间】:2018-11-18 16:47:51
【问题描述】:
出于以下几个原因,我想在 UI 测试中覆盖 XCTestCase 的 init 函数:
- 在 setUp() 之外启动应用程序,这样应用程序就不需要为每次测试重新启动(这很乏味并且会减慢测试速度)
- 要初始化其他提供一般导航应用程序的类,我必须使用测试用例 (self) 对其进行初始化。
我现在的样子是这样的:
import XCTest
class UITest: XCTestCase {
let app = XCUIApplication()
// Helper packages
var helper: UITestHelper!
override func setUp() {
super.setUp()
// Helper package instantiation
helper = UITestHelper(withTestCase: self, forApp: app)
continueAfterFailure = false
app.launch()
}
... tearDown(), tests ....
当我打电话时:
override init() {
super.init()
foo()
}
我收到Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
【问题讨论】:
-
一种可能的解决方法是使用
lazy变量,但请不要这样做。它将在您的测试之间创建依赖关系。
标签: ios swift xcode xcode-ui-testing