通过继承InstrumentationTestRunner,就可以传递自定义参数到TestRunner。这里是传递port、packageName、activityName,其中port是用于在手机侧启动一个TCP服务的端口,packageName和activityName是用于指定首个启动的activity的参数配置:

importandroid.os.Bundle;importandroid.test.InstrumentationTestRunner;publicclassAthrunInstrumentationTestRunnerextendsInstrumentationTestRunner{privatestaticStringpackageName="com.taobao.fario"; privatestaticStringactivityName="com.taobao.fario.MainActivity";privatestaticStringport="1234";publicstaticStringgetPort(){returnport;}publicstaticStringgetPackageName(){returnpackageName;}publicstaticStringgetActivityName(){returnactivityName;}@OverridepublicvoidonCreate(Bundlearguments){if(arguments!=null){Stringport=arguments.getString("port");StringpackageName=arguments.getString("packageName");StringactivityName=arguments.getString("activityName");if(port!=null){AthrunInstrumentationTestRunner.port=port;}if(packageName!=null){AthrunInstrumentationTestRunner.packageName=packageName;}if(activityName!=null){AthrunInstrumentationTestRunner.activityName=activityName;}}super.onCreate(arguments);}

执行命令变成:

adb-sSH14MTJ01900shellaminstrument-w-eport1234-eclassorg.athrun.remoterunner.TravelTest#testorg.athrun.remoterunner/org.athrun.instrumentation.AthrunInstrumentationTestRunner

在Testcase中如何使用传入的packageName和activityName:

publicclassTravelTestextendsActivityInstrumentationTestCase2{privatestaticStringgetPkgName(){StringpackageName=AthrunInstrumentationTestRunner.getPackageName();returnpackageName;}privatestaticStringgetActivityClassStr()throwsClassNotFoundException{StringactivityName=AthrunInstrumentationTestRunner.getActivityName();returnactivityName;}publicTravelTest()throwsException{super(getPkgName(),getActivityClassStr());}

-e 是属于扩展参数,使用这种方法是可以不断扩展的。