5

アプリケーションの一部をストレステストするために、Monkey debugginツール(adbから)を使用しようとしています。Monkeyは完​​全にランダムな方法で動作するため、探しているエラーが含まれている可能性のあるコードの部分に集中してください(非常にまれなバグであり、複製方法がわかりません)。

したがって、メインアクティビティには6つのボタンがあり、それぞれが新しいアクティビティを起動します。サルは、それらのアクティビティの1つだけを見て、そこからアクセスできるすべてのアクティビティを見るように設定したいと思います。私はそれを行うための合理的な方法を見つけることができません。

私はマニフェストファイルでいくつかのアクティビティを試しましたが、
adb shell monkey -p my.package.name -c android.intent.category.MONKEY 1000
興味があります。

        <intent-filter>
            <category android:name="android.intent.category.MONKEY"/>                
        </intent-filter>

しかし、それはうまくいきませんでした。モンキーは、このタグで分類されていないアクティビティを引き続き起動します。モンキーが選択したサブアクティビティで作業することは非常に重要です。これは、実際にテストしたいサブアクティビティ以外で、アプリ内をローミングする時間が約95%を浪費するためです。

また、目的のサブアクティビティを起動するためにいくつかの簡単なスクリプトを試しましたが、成功しませんでした。

助けを求めて、
乾杯、
kajman

4

2 に答える 2

2

また、サルをカテゴリで制約することに関して少し問題がありました。あなたが想定しているように機能することを意図していないと思います。それではどのように機能しますか?はっきりとした考えはありません。ただ実験してみてください。ドキュメントはかなり貧弱です。

あなたの問題については、次のアプローチを検討することができます

  1. サブアクティビティを1つのサブパッケージの下に置き、-pオプションを使用してそのサブパッケージのみへのアクセスを許可します
  2. アプリ内のナビゲーションを妨げるいくつかの制約をコードに追加します。たとえば、onClickListenersを何もしないように設定するか、特定の条件が満たされたときにテスト対象のアクティビティの戻るボタンを無効にします。

PS目的のサブアクティビティを開始するために、 adb shellamstartを使用できます。繰り返しになりますが、ドキュメントは貧弱ですが、例はありませんが、アクションは、AndroidManifestのアクティビティのintent-filter内で定義したアクションの名前です。名前はアクティビティ名です。たとえば、

adb shell am start -a my.package.app.ACTION1 -n my.package.app/.sub.MyActivity
于 2011-01-13T11:08:21.357 に答える
2

少し遅れていることはわかっていますが、もっと堅牢な方法があります。次のようなコードを使用してください。

ActivityManager activityManager;
activityManager =  (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

if(!activityManager.isUserAMonkey()) {
    //stuff you want to execute anywhere but monkey test
});
于 2012-12-17T15:51:19.507 に答える