XCTAssertNotNil在Swift 2中不起任何作用

XCTAssertNotNil在Swift 2中不起任何作用,swift,xctest,Swift,Xctest,在我新创建的Xcode 7.3.1项目中,我有一个如下的测试用例: func testDatePicker\u配置正确(){ 如果vc.datePicker==nil{ 打印(“日期选择器为零”) } xctasertnotnil(vc.datePicker,“必须链接日期选择器”) } 当我运行测试时,我清楚地看到控制台说“Date picker为nil”,但断言不会触发。选择器只是一个正常的插座: 最终类用法ViewController:NSViewController{ @ibvar日期

在我新创建的Xcode 7.3.1项目中,我有一个如下的测试用例:

func testDatePicker\u配置正确(){
如果vc.datePicker==nil{
打印(“日期选择器为零”)
}
xctasertnotnil(vc.datePicker,“必须链接日期选择器”)
}
当我运行测试时,我清楚地看到控制台说“Date picker为nil”,但断言不会触发。选择器只是一个正常的插座:

最终类用法ViewController:NSViewController{
@ibvar日期选择器:NSDatePicker!
}

为什么会忽略not nil的断言?

对于
xctasertnotnil
来说,最简单的示例适用于我:


尝试在测试代码中添加断点,并仅运行这一个测试。

您的测试似乎有竞争条件,因为它取决于在本测试范围之外管理的
vc
的状态。您可以按所述强制加载视图,也可以设置谓词期望。

这可能是竞争条件。如果XCTASERTNOTNIL调用位于测试函数的顶部,您会得到什么结果?您是否熟悉waitForExpectationsWithTimeout()?我发现如果视图尚未加载,则此操作将失败。当我强制加载视图时(我本来应该这样做),它突然开始在那里执行正确的断言。我要打开苹果的一个漏洞。我花了很多时间在同一个问题上。然后我发现这个
self.continueAfterFailure=NO
。您在单元测试的
-(void)setUp
方法中设置了这个值。在示例中,我显示您是正确的。“if”实际上导致加载视图,然后断言工作。奇怪的是,如果我忽略了if,它仍然会通过。我会继续玩。