当 运行 在 iOS 11 模拟器上测试时,所有 IOutlet 属性在视图控制器中都是 "nil"

All IOutlet properties are "nil" in a view controller when running test on iOS 11 Simulator

我在 iOS 11 模拟器中遇到一个问题,在某个单元测试中,swift 视图控制器的所有 IBOutlet 属性都是 "nil",并且相同iOS 10.3 中填充了属性,并且测试也通过了。

它具有额外的复杂性,即测试在 运行 隔离时通过,并且 也通过设备 。它仅在 iOS 11 模拟器、 和 运行 以及所有其他测试 .

上失败

没有解释为什么测试在模拟器 + iOS 11 而不是其他配置上失败,但是通过使用静态方法创建第二个视图控制器解决了这个问题。出于某种原因,空初始化器 ("CardViewController()") 以前可以工作,但现在需要像上面那样的完整创建方法。

我对 viewController 的加载方式有点误解(它是在 setup() 方法中加载的),但我也发现这个资源很有用:

https://www.natashatherobot.com/ios-testing-view-controllers-swift/

它没有解决问题,但对 XCTest 中可能出现的竞争条件是一个有用的提醒。