我正在Android中開發,我正在使用工具來測試Phone應用程序。儀表是Android env測試應用程序。如何將參數傳遞給使用adb shell啓動的測試函數?Instrumentation命令
爲此我使用am命令和測試用例的名稱。 我運行adb,然後進入adb shell,然後在shell中寫入am命令。
我希望與這個命令一起提供一個參數。 我的意思是我希望將參數傳遞給am命令啓動的測試。
是否有可能? 請幫忙?
我正在Android中開發,我正在使用工具來測試Phone應用程序。儀表是Android env測試應用程序。如何將參數傳遞給使用adb shell啓動的測試函數?Instrumentation命令
爲此我使用am命令和測試用例的名稱。 我運行adb,然後進入adb shell,然後在shell中寫入am命令。
我希望與這個命令一起提供一個參數。 我的意思是我希望將參數傳遞給am命令啓動的測試。
是否有可能? 請幫忙?
你可以傳遞一個數據uri,mime類型甚至是「extras」到am command。
上午[開始|儀器]
上午開始[-a <行動>] [-d ]
[-t <MIME_TYPE>] [-c > <類別[-C > <類別] ...]
[-e <extra_key> <extra_value>
[-e <extra_key> <extra_value> ...]
[-n <部件>] [-D] [<URI>]上午儀器[-e <arg_name> <arg_value>] [-p <prof_file>] [-w] <組件>
你可以將它們作爲 「臨時演員」,然後讓傳遞給它的額外信息。
你會通過他們這樣的:
am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT
-e foo bar -e bert ernie -n my.package.component.blah
然後在你的代碼:
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");
}
恰恰是:
./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 - > uir到您的主要課程活動啓動應用程序。 將傳遞到您的應用程序PARAM USER_ID = 1 和類SelectCardActivity你得到它的波紋管:
Bundle installparams = this.getIntent ().getExtras ();
既然你已經在Android SDK的工作給你知道你的系統上的SDK的位置 - 轉到在端子SDK位置(命令提示) - >輸入ADB殼 - >類型時幫助
與例如 http://whenpridefucks.blogspot.in/2011/12/android-send-broadcast-intents-via-adb.html
傳遞paramater在:(例如,-e的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
在測試類:
{
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");
}
}
這是我所需要的,因爲我沒有在Activity中這樣做 – wangburger 2016-01-22 22:34:48
嗨瑞安 我花了一些時間,我怎麼能對我的測試提供一個參數/ s的好榜樣照顧 - 對不起只是找不到的東西有用。 您可以請發送一些鏈接或代碼在Java的apk的代碼段,應該檢索這些參數(額外) 和我如何編寫adb外殼和啓動命令的示例, 提供額外的目標測試。 非常感謝 Ilana – ilana 2010-07-13 08:48:54
我所有的例子都沒有提到通過para參數來測試是否由am命令啓動...我真的執行了一個搜索 – ilana 2010-07-13 09:05:24
我更新了我的答案,該例子應該能夠從我開始命令 – 2010-07-15 03:27:20