我在通知测试方面遇到了一些问题。我在全新的整洁项目中复制了此案例,但仍无法在测试中收到通知。
在viewDidLoad()
方法中,我这样发布通知:
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
NotificationCenter.default.post(name: Notification.Name("Test"), object: nil, userInfo: nil);
}
在我的测试中,我尝试抓住它:
var app: XCUIApplication!
override func setUp() {
super.setUp()
continueAfterFailure = false
app = XCUIApplication()
app.launch()
}
func testExample() {
expectation(forNotification: Notification.Name("Test"), object: nil) { notification in
return true
}
waitForExpectations(timeout: 10, handler: nil)
}
但是它不起作用。
我在Stackoverflow上找到了一些信息,我应该满足期望,但没有触发我的处理程序。
简单的代码,简单的测试,但是它不起作用-令人沮丧。
顺便说一句,我在Xcode 9.4.1中使用UITests,并且发现使用UnitTests都可以正常工作。可能的错误?
答案 0 :(得分:0)
您将无法在UI测试中测试Notification
的接收情况,因为UI测试运行程序在与应用程序不同的运行时中运行。
要直接测试是否使用Notification
发布了expectation(forNotification:object:handler:)
,则需要使用单元测试。如果要UI测试这种情况,则需要测试屏幕上显示的通知的<结果>结果,因此暗示通知已发送。如果没有明显的发布结果,您将无法进行UI测试。