2010-07-12 3 views
20

Ich entwickle in Android, verwende ich Instrumentierung, um Phone-Anwendung zu testen. Instrumentierung ist Android env zum Testen von Anwendungen.Wie kann ich Parameter zu einer Testfunktion liefern, die mit adb-Shell gestartet ist Instrumentation Befehl

Dafür verwende ich am Befehl mit dem Namen des Testfalls. Ich führe adb, dann gebe ich Adb-Shell, dann schreibe in Shell den Befehl am.

Ich möchte einen Parameter zusammen mit diesem Am-Befehl liefern. Ich meine, dass ich Parameter zu dem Test liefern möchte, der vom Befehl am gestartet wird.

Ist es möglich ??? Bitte helfen?

Antwort

43

können Sie eine Daten uri, Pantomime Typ und sogar "Extras" an die am command übergeben.

am [Start | instrument]

Uhr beginnen [-a <Aktion>] [-d ]
[-t <mime_type>] [-c <Kategorie> [-c <Kategorie>] ...]
[-e <extra_key> <extra_value>
[- <extra_key> <extra_value> ...]
[-n ​​<Komponente>] [-D] [<uri>]

am Instrument [-e <arg_name> <arg_value>] [-p <prof_file>] [-w] <Komponente>

Man könnte sie als "Extras" übergeben und dann bekommen die Extras, die an sie weitergegeben werden.

Sie würden sie wie folgt passieren:

am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT 
    -e foo bar -e bert ernie -n my.package.component.blah 

dann in Ihrem Code:

Bundle extras = this.getIntent ().getExtras (); 

if (extras != null) { 
    if (extras.containsKey ("foo")) { 
    Log.d ("FOO", extras.getString ("foo")); 
    } else { 
    Log.d ("FOO", "no foo here"); 
    } 

    if (extras.containsKey ("bert")) { 
    Log.d ("BERT", extras.getString ("bert")); 
    } else { 
    Log.d ("BERT", "Bert is all alone"); 
    } 
} else { 
    this.setTitle ("no extras found"); 
} 
+0

Hallo Ryan ich für die Betreuung gutes Beispiel für einige Zeit damit verbracht, wie kann ich einen Parameter/s zu meinem Test liefern - leider finden konnte einfach nicht etwas sinnvoll. Können Sie bitte senden Sie einen Link oder Code-Schnipsel in Java von apk, die diese Parameter (Extras) abrufen sollten und ein Beispiel dafür, wie ich schreibe adb shell am start-Befehl, die liefert die Extras auf den Test auf Ziel. Vielen Dank Ilana – ilana

+0

Alle Beispiele, die ich habe, sprechen nicht über Pass-Parameter zu testen von am-Befehl gestartet ... Ich habe wirklich eine Suche durchgeführt – ilana

+0

Ich aktualisierte meine Antwort mit einem Beispiel, das funktionieren sollte, um die Extras aus dem Set zu bekommen bin Startbefehl –

0

genau ist:

./adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -e user_id 1 -n com.shortcut.activity/com.shortcut.activity.SelectCardActivity 

com.shortcut.activity/com.shortcut .activity.SelectCardActivity -> zu Ihrer Hauptklasse Aktivität Start App. wird an Ihre App param User_id pass = 1 und auf Klasse SelectCardActivity Sie es als Gebrüll erhalten:

Bundle installparams = this.getIntent ().getExtras (); 
11

Pass die Paramater in: (zB, -en peerID SCH-I545)

adb -s 0915f98870e60701 shell am instrument -w -e class /
com.example.android.testing.uiautomator.BasicSample.sendInvite/
-e peerID SCH-I545/
com.example.android.testing.uiautomator.BasicSample.test/android.sup/
port.test.runner.AndroidJUnitRunner 

In der Testklasse:

{ 
    Bundle extras = InstrumentationRegistry.getArguments(); 
    String peerID = null; 

    if (extras != null) { 
     if (extras.containsKey ("peerID")) { 
      peerID = extras.getString("peerID"); 
      System.out.println("PeerID: " + peerID); 
     } else { 
      System.out.println("No PeerID in extras"); 
     } 
    } else { 
     System.out.println("No extras"); 
    } 
} 
+0

Dies ist, was ich brauchte, da ich dies in einer Aktivität nicht getan habe – wangburger