5

テストケースを開始する1つの方法は、

adb shell am instrument 
  -w com.google.vishal.test/android.test.InstrumentationTestRunner 

Androidコードを使用してこれを開始したい(意図的に)

例えば、

adb shell am start -n com.google.android.contacts/.ContactsActivity

次の方法でAndroidインテントを使用して実行できます:-

Intent intent = new Intent(com.google.android.contacts, ContactsActivity.class);
startActivity(intent);

しかし、実行する方法

adb shell am instrument 
  -w com.google.vishal.test/android.test.InstrumentationTestRunner 

Androidの意図によって?

事前にご協力いただきありがとうございます:-)

4

2 に答える 2

17

adbシェルからインストルメンテーションを開始するコマンド:-

adb shell am instrument -w com.android.vishal.project.test/android.test.InstrumentationTestRunner   

Androidアクティビティからインストルメンテーションを開始するAndroidコード:-

 startInstrumentation(new ComponentName("com.android.vishal.project.test", "android.test.InstrumentationTestRunner"), null, null);

ノート :

他の方法、

インストルメンテーションを開始するためのAndroidコード(Android2.3からAndroid4.1.2)

String str_cmd = "adb shell am instrument -w com.android.vishal.project.test/android.test.InstrumentationTestRunner";
Runtime.getRuntime().exec(str_cmd);

Android 4.2の場合、権限「android.permission.INJECT_EVENTS」が必要です。これは、システムアプリケーションでのみ許可されます。セキュリティ上の理由により、ユーザーアプリケーションはこの権限を使用できません。

したがって、Runtime.getRuntime()。exec(str_cmd);を使用することはできません。Android4.2以降の場合..。

だから今働く方法は:

 startInstrumentation(new ComponentName("com.android.vishal.project.test", "android.test.InstrumentationTestRunner"), null, null);

アクティビティからこのコマンドを実行します。

ありがとう。

于 2013-01-17T05:47:53.640 に答える
2

これは実際には不可能です。その理由は、ADBを介して必要なインストルメンテーションを実行するために、adbはセキュリティのために特定の特別な特権を持っているため、電話で実行できないためです(他のオープンソースと同様に、もちろん可能ですが、Androidを書き直す必要があり、それをインストールした電話でのみ機能します!)。

これを行う理由をお聞きしてもよろしいですか?アプリケーション間で本当に自動化する必要がある場合は、新しいandroid uiテストフレームワークを使用するか、エミュレーターでのみテストして、現在のテストは行き止まりであるため、ビュー階層の最上位で実行されるものを使用することをお勧めします。 。

于 2013-01-16T07:20:00.783 に答える