我在通知测试方面遇到了一些问题。我在全新且干净的项目中复制了这个案例,但在测试中仍然无法收到我的通知。
在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 一切正常。可能的错误?
您将无法Notification
在 UI 测试中测试 s的接收情况,因为 UI 测试运行器在与您的应用程序不同的运行时中运行。
要直接测试 aNotification
是否使用 发布expectation(forNotification:object:handler:)
,您需要使用单元测试。如果你想对这个场景进行 UI 测试,你需要测试通知的结果是否显示在屏幕上,因此暗示通知已发送。如果发布的通知没有可见的结果,您将无法对其进行 UI 测试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句