2016-12-30 10 views
1

私には問題があり、解決方法はわかりません。私はappiumやその他のようなアンドロイドアプリの自動テストのためのいくつかのツールを見た。彼らは、デバイスの外部からアンドロイドデバイス、エミュレータに接続し、テストするアプリケーションを開きます。私は同じことができるネイティブアンドロイドアプリをどうやって作ることができるか知りたい。別のアプリケーションを開き、そのアプリケーションのUIでさまざまな操作を実行します。簡単な例として、テストしたいソーシャルアプリがあるとしましょう。私は私のソーシャルアプリを開き、アプリ内を検索したり、さまざまな投稿をクリックしたり、ポストを好きなように動作させたりするために電話で動作する別のものを求めています。これを行う方法はありますか?これを行うためのフレームワークやメソッドはありますか?アンドロイドアプリケーションのやりとり

よろしくお願いいたします。

答えて

2

Android用の2種類の自動化フレームワークがあります。

楽器ベース:機能テストのために

、ブラックボックスフレームワーク:

計装フレームワークは、以下のように動作:それらがインストールされると、各サンドボックス内のAndroid用アプリケーションが実行され、他のアプリケーションが自分の行動を変えることはできないので、計装ベースのフレームワークは、インストールパッケージを変更アプリケーションの相互作用を可能にするメソッド定義内にフックを注入する。これにより、Androidシステムでサンドボックスをバイパスすることができます。

他の3人はすべて、アプリケーションとの対話の基礎としてUIAutomator Androidサービスを持っています。 UIAutomatorはhte Android SDKの一部であり、実際のユーザーとのやりとり(クリック、スクロールなど)のエミュレーションを可能にしています。

5つのリストされたフレームワークのいずれも、あなたが望むものを達成することを可能にします。計測器は欠陥を隠すことができるので、私は個人的にブラックボックステストフレームワークを推奨します。私の好きなフレームワークはATMOSPHEREです。オープンソースで、しかも最近非常に使いやすくなっています。

+0

あなたの答えはThxです。しかし、このフレームワークはすべて、デバイスの外部から接続し、テストを実行します。私はデバイス上で動作するものが必要であり、外部ではなくエミュレータ内でテストを実行するために他のアプリケーションを開くことができます。 – user978123

+0

@ user978123これらのフレームワークはすべて、開発者マシンに常駐する別のコンポーネントに接続するデバイス上で実行されているコンポーネントを持っています。アウトオブデバイスコンポーネントの目的は、結果を視覚化して解釈することです。あるいは、オープンソースのフレームワークを変更して、デバイス上に結果を書き込み(またはHTTP経由で通信する)ようにすることもできます。これにより、後で結果を抽出できます。 –

1

明示的な意図を使用して別のアプリケーションを開くことができます。

public void openApplication(Context context, String packageName) { 
    PackageManager manager = context.getPackageManager(); 
    try { 
     Intent i = manager.getLaunchIntentForPackage(packageName); 
     if (i != null) { 
      i.addCategory(Intent.CATEGORY_LAUNCHER); 
      context.startActivity(i); 
     } else { 
      Log.e(TAG, "Unable to start application"); 
      return; 
     } 
    } catch (PackageManager.NameNotFoundException e) { 
     Log.e(TAG, "Package name not found"); 
     return; 
    } 
} 

開いているアプリケーションのコンテキストとパッケージ名を指定すると、このメソッドが呼び出されます。たとえば、Instagramを開くには:

openApplication(this, "com.instagram.android");