ここ数日、私が取り組んでいるアプリの開発を促進するための受け入れテストのスイートをまとめようとして、Apple の UIAutomation フレームワークをいじっていました (BDD タイプの方法で...)。
私がぶつかっていることの 1 つは、SUT を特定の状態にする方法です。これにより、内部状態を設定する必要がある場合にテストを開始できます。問題は、Apple の Javascript 環境が、UI 以外のデバイスとの通信に使用できる機能を提供していないことです (これはおそらく設計によるものですが、これは非現実的な場合もあります): iCukeやFrankなどのソリューションは、 HTTP を使用して、そのような通信の目的でターゲット アプリに組み込まれたリッスン サーバーと通信できますが、Instrument の UIAutomation 環境内でこのようなことを行う方法はありません。
提供された API を見ると、UIAApplication クラスに、ターゲット デバイスに設定値を設定できる関数があることに気付きました (詳細については、こちらを参照してください)。 KVO を使用して、特定の設定キーの可能性を監視し、これをターゲット アプリケーションの特別なテスト固有のヘルパー コード (設定の値が変更されたときに反応する) と通信する手段として使用できます。
これを機能させることができるかどうか試してみましたが、ターゲット アプリ内から UIAutomation によって設定された設定にアクセスする方法が見つからないというレンガの壁にぶつかりました。問題は、環境設定がホスト ドメイン レベルで設定されているように見え (つまり、ファイルで設定されている) 、アプリケーション固有/Library/Preferences/com.mycompany.MyApp
のサンドボックス フォルダーでは設定されていないことです。/Library
私が設定した設定がデバイスにヒットしていることは確かです - 前述のファイルで値が変化していることを確認できますが、NSUserDefaults を使用してこれらの値にアクセスする方法が見つかりません。
iOS デバイスのこのレベル (NSLocalDomain...) に保存されている設定にアクセスする方法について、誰でも光を当てることができますか?
注:これは完全なハッキングであることは承知していますが、残念ながら現在 Apple が提供している環境は非常に不十分なように思われるため、Apple からのさらなるアップデートの代わりにギャップを埋めるために最善を尽くしています. Web を検索すると、他の人が非常によく似た経験をしており、同様の方法で現在の欠陥を回避しようとしていることがわかります。
更新:このスレッドによると、これはバグである可能性があります。はっきりとは断言できませんが..