2017-10-23 6 views
0

Xcode 9では、新規起動引数-StartFromCleanStateがあります。これは、クリーンインストール後にアプリを起動すると想定しています。しかし、それは動作していないとグーグル-StartFromCleanStateは結果をもたらすことはありませんので、ドキュメントがなくなります。XCTest UITestのフレッシュインストールアプリ

source

私の目標は、ディープリンクを使用して私のアプリを起動することです。私のテストの流れはそうのようなものです:UITestアプリを起動することで始まる

  1. UITestはサファリ
  2. UITestが
  3. UITestがリンクしてアプリケーションをクリックディープリンクのリンクを持っているWebページに入り開きます開くには

ステップは、アプリをバックグラウンド状態からフォアグラウンド状態にすることによって開きます。どのアプリケーションを意味します:didFinishLaunchingWithOptions:アプリがインストールされ、クリーン/新鮮な場合にのみ1

func test_deeplink() { 
    programmaticallyTapDeepLink() 
    XCUIApplication().launchArguments = ["-StartFromCleanState", "YES"] 
} 

段階で一度呼び出さ理想的には私はディープリンクをテストしたいと思います。

プログラマチックにディープリンクをタップする前に、起動時の引数を設定しようとしましたが、私が望むように動作しないようです。

解決方法はありますか?あなたがソースとして指定した文書で

答えて

0

、ライターは、サンプルコードを提供します。

XCTContext.runActivity(named: "Given I have launched app in clean state") { _ in { XCUIApplication().launch() XCUIApplication().launchArguments = ["-StartFromCleanState", "YES"] }

-StartFromCleanStateは「新しい起動引数」ではありません。これは、XCUIApplication()。launchArgumentsメソッドに提供されるキーと値です。渡された起動引数(["-StartFromCleanState", "YES"])を処理するのは、テスト対象のアプリケーションの開発者(XCUIApplication)です。

このスタックオーバーフローの答えはいくつかの例があります: How to access launchEnvironment and launchArguments set in XCUIApplication, running UI tests in XCode?

あなたはまた、userDefaults上に読んで検討する必要があります。

起動時間:あなたは、これら二つのライフサイクルのいずれかの方法で渡されたlaunchArgumentsに基づいてそれらのリセットをトリガする場合があります application(_:willFinishLaunchingWithOptions:) application(_:didFinishLaunchingWithOptions:)

アプリケーションのライフサイクル状態とデリゲートの詳細は、このリンゴのドキュメントを参照してください。各状態で利用できる方法: https://developer.apple.com/documentation/uikit/uiapplicationdelegate

関連する問題