1

コンテクスト

多くのネイティブアプリでは、ユーザーは独自の認証システムではなく、Facebookで認証されます。これは、Javascriptバインディングを使用してiOSUIAutomationテストケースを作成するのに問題がありました。ユーザーの観点から見ると、私たちのシナリオは通常、次のようになります。

シナリオ

  1. ユーザーは「Facebookに接続」をクリックします。
  2. (ターゲット)アプリケーションがバックグラウンドに移動し、Safariブラウザーがフォアグラウンドに移動するため、ユーザーはoAuthで認証できます。
  3. ユーザーは認証データを入力して送信します。
  4. Safariブラウザウィンドウがバックグラウンドに移動し、ターゲットアプリケーションがフォアグラウンドに戻ります。

問題

テストを実行する前に、Instrumentsはユーザーにトップメニューバーで「ターゲットアプリ」を設定させます。Instruments内で自動化を使用すると、ターゲットアプリがバックグラウンドに移動し、Safariアプリがフォアグラウンドに移動するときに問題が発生します(ステップ#2)。この時点で、Instrumentsはレポートします

ターゲットアプリケーションが停止したようです

これは、(または同様の)変更のポーリング/テストと同じくらい簡単だと思いましたがUIATarget.localTarget().frontMostApp()、そうではないようです-テストの実行は実行を停止します。

Instrumentsを使用してこのシナリオを正常にテストするにはどうすればよいですか? これは、UIAutomationのJavascriptバインディングを使用したテスト可能なシナリオですか?

4

1 に答える 1

2

残念ながら、これは不可能です。アプリがバックグラウンドでフリーズして続行しないため、Instruments はアプリとの接続を失います。また、UI オートメーションは自分で作成したアプリ以外では動作しないため、タッチ イベントを Safari に送信することはできません。

ビルド済みの SDK を使用している場合は、ほとんど運がありません。ただし、独自の Oauth 接続を展開している場合は、ユーザーをモバイル Safari に追い出す代わりに、Facebook の Oauth 認証ページに移動する webview を持つモーダル ビュー コントローラーを提示できます。

そうすれば、アプリケーションは決して終了しません。次に、webview に送信するイベントを把握し、そこからこれをテストしてみてください。

于 2012-11-11T19:17:41.900 に答える