写过android 测试工程的人都应该很熟悉下面的命令行执行方式,他的目的就是脱离Eclipse直接运行。
adb shell am instrument -e class com.android.foo.MyTestSuite -w com.android.foo/android.test.InstrumentationTestRunner
经观察 -e class 就能传参数到apk中,那么我们只要重新InstrumentationTestRunner 来添加我们所需要的参数即可。
我改造后的结果:
adb shell am instrument -e cardNumber 3333333333333333 -e class com.script.transfer -w com.android.foo/com.zutubi.android.junitreport.JUnitReportTestRunner
1.JUnitReportTestRunner 是继承InstrumentationTestRunner
2.在onCreate(Bundle arguments) 方法中直接获取所需要的参数
类似mCan = arguments.getString(“您所需要的参数名称”),这样我们就获得了命令行中通过
-e 您所需要的参数名称 传进来的参数
3.接下来就是如何来在具体case中使用这个参数了
通过SharedPreferences 来存储这个参数,那么在工程中就可以任意调用了。
SharedPreferences sp = getTargetContext().getSharedPreferences(“xml名称”, 0);
sp.edit().putString(“参数的key”, arguments.getString(“您所需要的参数名称”)).commit();
这样就实现了我们的目的,由于通过intent无法传递参数具体原因未知,所以只能是通过SharedPreferences来存储信息了