2011-01-11 2 views
4

Ich versuche, Monkey Debuggent Tool (von adb) zu verwenden, um einen Teil meiner Anwendung zu testen. Da Monkey auf ganz zufällige Art und Weise agiert, möchte ich mich auf den Teil des Codes konzentrieren, der einen Fehler enthält, den ich suche (sehr seltener Fehler, und ich weiß nicht, wie ich ihn replizieren soll).Mit Affe in einer Unteraktivität nur (Android-Debugging)

Also, in meiner Haupttätigkeit habe ich 6 Tasten, jeder startet eine neue Aktivität. Ich möchte den Affen dazu bringen, nur auf eine dieser Aktivitäten zu schauen, und auf jede Aktivität, die damit möglich ist. Ich kann keinen vernünftigen Weg finden, es zu tun.

Ich habe das versucht
adb shell monkey -p my.package.name -c android.intent.category.MONKEY 1000
und in meiner Manifest-Datei habe ich in einigen Aktivitäten setzen, dass ich habe Interesse an:

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

Aber es hat nicht funktioniert. Affe startet weiterhin Aktivitäten, die nicht von diesem Tag kategorisiert sind. Es ist wichtig für Monkey, in ausgewählten Subaktivitäten zu arbeiten, da es 95% der Zeit damit verschwendet, durch meine App zu routen, außerhalb von Subaktivitäten, die ich tatsächlich testen möchte.

Auch ich habe ein einfaches Skript ausprobiert, um die gewünschte Subaktivität zu starten, aber ohne Erfolg.

für jede Hilfe Sehen,
prost,
kajman

Antwort

1

Ich habe auch ein wenig Probleme mit den Affen mit Kategorien einzuschränken. Ich denke, es ist nicht beabsichtigt, so zu arbeiten, wie Sie annehmen. Wie funktioniert es dann? Ich habe keine klare Idee, experimentiere nur damit. Die Dokumentation ist ziemlich schlecht.

Für Ihr Problem können Sie den folgenden Ansätze betrachten

  1. Ihre Teilaktivitäten unter einem Put subpackage und erlauben den Zugriff auf nur diese subpackage mit der Option -p
  2. einige Einschränkungen, um Ihren Code hinzufügen, dass die Navigation verhindert in der App. Legen Sie beispielsweise fest, dass onClickListeners keine Aktion ausführt, oder deaktivieren Sie die Schaltfläche "Zurück" für die zu testende Aktivität, wenn eine bestimmte Bedingung erfüllt ist.

P.S. Sie können adb shell am start verwenden, um die gewünschte Unteraktivität zu starten. Wieder schlechte Dokumentation, kein Beispiel, aber die Aktion ist der Name der Aktion, die du im intent-filter für die Aktivität in deinem AndroidManifest definiert hast. Name ist der Name Aktivität, zum Beispiel

adb shell am start -a my.package.app.ACTION1 -n my.package.app/.sub.MyActivity 
1

Ich weiß, dass es etwas spät, aber hier ist robuster Weise - Code wie folgt aus:

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

if(!activityManager.isUserAMonkey()) { 
    //stuff you want to execute anywhere but monkey test 
}); 
Verwandte Themen