2010-07-12 2 views
20

Android에서 개발 중이며 계측을 사용하여 전화 응용 프로그램을 테스트하고 있습니다. 계측은 Android 환경에서 애플리케이션을 테스트하는 데 사용됩니다.adb 셸을 사용하여 시작한 테스트 함수에 매개 변수를 전달하는 방법 계측 명령

나는 테스트 케이스의 이름과 함께 am 명령을 사용합니다. adb를 실행 한 다음 adb 쉘을 입력하고 am 명령을 쉘에 씁니다.

이 am 명령과 함께 매개 변수를 전달하려고합니다. am 명령으로 시작된 테스트에 매개 변수를 전달하고자합니다.

가능합니까 ??? 도와주세요.

답변

43

당신은 데이터 uri, MIME 유형, 심지어는 "extras"를 am command에 전달할 수 있습니다.

오전 [시작 | 악기]

오전 시작 [-d ]
[-t <MIME_TYPE>] [< 카테고리 > [-c -c [< 행동 > -a] < 카테고리 >] ...]
[-e <extra_key> <extra_value>
[-e <extra_key> <extra_value> ...]
[성분 >] [-D [<URI>]

AM 구 [-e <arg_name> arg_value > <] [-p < prof_file < -n >] [-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"); 
} 
+0

안녕 라이언 내가 내 테스트에 매개 변수/S를 제공 할 수있는 방법의 좋은 예 후보고를 위해 몇 시간을 보냈다 - 뭔가 죄송 찾을 수 없습니다 유능한. apk의 java에서 이러한 매개 변수 (부가 기능) 을 가져와야하는 링크와 코드 스 니펫을 보내 주시겠습니까? 이 대상 테스트에서 추가 기능을 제공하는 시작 명령 인 adb 쉘을 작성하는 방법의 예입니다. 고맙습니다 more Ilana – ilana

+0

내가 가진 모든 예는 am 명령으로 시작한 테스트 매개 변수를 전달하는 것이 아닙니다. 검색을 실제로 수행했습니다. – ilana

+0

내 대답을 업데이트 한 후 오전 시작 명령 –

0

정확히 :

./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 클래스 :

당신이 당신의 시스템에 SDK의 위치를 ​​알고 주어진
Bundle installparams = this.getIntent ().getExtras (); 
11

는에 paramater를 전달합니다 (예를 들어, 대해서는 peerID SCH-I545 -e)

테스트 클래스에서
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"); 
    } 
} 
+0

참조 이것은 활동에서이 작업을 수행하지 않아서 필요한 작업입니다. – wangburger

관련 문제