jah*_*ven 5 ios xctest swift swift3
当我打电话
UIApplication.shared.keyWindow
要尝试在我的测试类中设置根视图控制器,键窗口将返回nil。为什么会这样呢?
这是我设置情节提要的方法:
let testBoard = UIStoryboard(name: "TestStoryboard", bundle: Bundle(for: type(of: self)))
let vc = testBoard.instantiateViewController(withIdentifier: "TestController")
UIApplication.shared.keyWindow?.rootViewController = vc
_ = vc.view
vc.viewDidLoad()
Run Code Online (Sandbox Code Playgroud)
创建一个窗口并分配视图控制器。
let testBoard = UIStoryboard(name: "TestStoryboard", bundle: Bundle(for: type(of: self)))
let vc = testBoard.instantiateViewController(withIdentifier: "TestController")
let window = UIWindow()
window.rootViewController = vc
window.makeKeyAndVisible()
vc.view.layoutIfNeeded()
// Add test here
Run Code Online (Sandbox Code Playgroud)
之后,我注意到您还在致电vc.view和viewDidLoad。我建议只访问视图以使其加载,而不viewDidLoad隐式调用-我个人使用vc.view.layoutIfNeeded()
根据您实际需要测试的内容,对我而言,很少需要将视图控制器分配给窗口本身。通常,您只需要创建视图控制器的实例就可以摆脱困境,如果您要测试任何UI代码,还请确保已填充视图。
我唯一需要将视图控制器分配给窗口的次数之一是在测试导航之类的东西时,我想断言由于某种动作,另一个视图控制器正在模态显示。
| 归档时间: |
|
| 查看次数: |
2025 次 |
| 最近记录: |