2017-03-01 3 views
1

XCUITestでは、通知バナーが画面に送信されることを検証できますか?XCUITestは通知バナーと対話します。

通知にアクセシビリティ識別子を追加できますが、バナーが画面に表示されているときにXCUITestと対話するのに問題があります。私は、XCUITestがアプリケーションとは別のプロセスで動作することを知っていますが、通知とやりとりすることがまだ可能だった場合、またはXCUITestの範囲を超えている場合は勝っていましたか?

ありがとう、

答えて

0

まだ、残念ながら、 XCUITestは、通知バーへのアクセスを提供しません。 Appiumは良い選択肢ですが、アップルはプッシュ通知をテストする手段をまだ提供していません。これを回避する方法の1つは、アプリに通知を送信させ、通知ポップアップが表示されているときにスクリーンショットを撮ってから、画像認識技術を使って通知が正しいかどうかを確認することです(OpenCVなど)。これはwaaaaayより "回避策"を使用したいと思っていますが、私がこれまで知っていた唯一の方法ですが、これが役立つことを願っています。

2

Xcode 9これは現在可能です。他のアプリにアクセスできます。これには、通知バナーを含むバネボードが含まれます。

XCUIApplicationには、パラメータとしてバンドル識別子を受け取る新しい初期化子が追加されました。そのバンドルIDを使用するアプリケーションへの参照を提供します。その後、通常のクエリを使用して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

を含むデモのアプリをチェックアウトすることができますリモート通知とUITests。コードからリモート通知を直接スケジュールすることはできないため、もう少し作業が必要です。これにはNWPusherというサービスを使用できます。私はhow to test Remote Notifications with Xcode UITestsについてのblogpostを書いており、ギターにはdemo projectもあります。

関連する問題