XCUITest에서 알림 배너가 화면에 전송되는지 확인할 수 있습니까?XCUITest는 알림 배너와 상호 작용합니다.
알림에 접근성 식별자를 추가 할 수 있지만 배너가 화면에있을 때 XCUITest와 상호 작용하는 데 문제가 있습니다. 나는 XCUITest가 응용 프로그램과 별개의 프로세스에서 실행되지만 통지와 상호 작용할 수 있거나 XCUITest의 범위를 벗어나는 경우 승리했다고 알고 있습니다.
감사합니다.
XCUITest에서 알림 배너가 화면에 전송되는지 확인할 수 있습니까?XCUITest는 알림 배너와 상호 작용합니다.
알림에 접근성 식별자를 추가 할 수 있지만 배너가 화면에있을 때 XCUITest와 상호 작용하는 데 문제가 있습니다. 나는 XCUITest가 응용 프로그램과 별개의 프로세스에서 실행되지만 통지와 상호 작용할 수 있거나 XCUITest의 범위를 벗어나는 경우 승리했다고 알고 있습니다.
감사합니다.
아직 안타깝게도. XCUITest는 알림 표시 줄에 대한 액세스를 제공하지 않습니다. 거의 모든 테스트 시나리오에서 Apple이 좋은 대안이지만 Apple은 푸시 알림 테스트를 제공하지 않습니다. 이 문제를 해결하는 방법 중 하나는 앱이 알림을 보내도록 강요하고 알림 팝업이 표시 될 때 스크린 샷을 찍은 다음 이미지 인식 기술을 사용하여 알림이 올바른지 확인합니다 (예 : OpenCV). 이것은 waaaaay보다 "해결 방법"을 사용하고 싶습니다. 그러나 지금까지 알고있는 유일한 방법입니다. 이것이 도움이되기를 바랍니다.
Xcode 9 이제 가능합니다. 다른 앱에 액세스 할 수 있습니다. 알림 배너가 포함 된 스프링 보드가 포함됩니다.
XCUIApplication
에는 이제 번들 식별자를 매개 변수로 사용하는 새로운 초기화 프로그램이 있습니다. 해당 번들 식별자를 사용하는 앱에 대한 참조를 제공합니다. 그런 다음 일반 쿼리를 사용하여 UI 요소에 액세스 할 수 있습니다. 전에 자신의 앱으로 해본 것처럼.
import XCTest
class UserNotificationUITests: XCTestCase {
override func setUp() {
super.setUp()
continueAfterFailure = false
}
func testIfLocalNotificationIsDisplayed() {
let app = XCUIApplication()
let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
app.launch()
// close app to trigger local notification
XCUIDevice.shared.press(XCUIDevice.Button.home)
// wait for the notification
let localNotification = springboard.otherElements["USERNOTIFICATION, now, Buy milk!, Remember to buy milk from store!"]
XCTAssertEqual(waiterResultWithExpectation(localNotification), XCTWaiter.Result.completed)
}
}
extension UserNotificationUITests {
func waiterResultWithExpectation(_ element: XCUIElement) -> XCTWaiter.Result {
let myPredicate = NSPredicate(format: "exists == true")
let myExpectation = XCTNSPredicateExpectation(predicate: myPredicate,
object: element)
let result = XCTWaiter().wait(for: [myExpectation], timeout: 6)
return result
}
}
당신이 테스트 here
포함 데모 응용 프로그램을 체크 아웃 할 수 할 수 있습니다 또한 시험 :
이
앱이 종료 될 때 지역 알림가 표시되고 있는지 확인하는 테스트입니다 원격 알림 with UITests. 코드에서 원격 알림을 직접 예약 할 수 없기 때문에 더 많은 작업이 필요합니다. 당신은 NWPusher이라는 서비스를 사용할 수 있습니다. 나는 how to test Remote Notifications with Xcode UITests에 대한 블로그 포스트를 작성했으며 demo project은 github에 있습니다.