我可以从命令行启动我的Android应用程序Junit / Robotium测试,如下所示:
adb shell am instrument -w com.myapp.client.test/android.test.InstrumentationTestRunner
但是,我想以某种方式包含一个自定义参数,允许我指定测试是以“纵向”模式还是“横向”模式运行。
我怎么能:
在命令行命令中指定自定义参数?
如何在Java代码中访问该自定义参数的值?
由于
答案 0 :(得分:2)
您可以扩展Android Instrumentation运行器和覆盖 oncreate()方法,以从命令行获取自定义参数。在执行测试用例时使用您的自定义仪器运行器。
public class CustomInstrumentationRunner extends android.test.InstrumentationTestRunner{
@Override
public void onCreate(Bundle arguments) {
//process you parameters here.
super.onCreate(arguments);
}
@Override
public void onStart() {
try {
logger = CustomLogger.GetLogger();
} catch (Exception e) {
throw new RuntimeException(e);
}
super.onStart();
}
答案 1 :(得分:2)
您可以使用
指定自定义参数adb shell am insrument -e <NAME> <VALUE> <package/runner>
如果您覆盖onCreate
的{{1}}方法,则可以使用可用的捆绑包来获取其值。
E.g:
InstrumentationTestRunner
答案 2 :(得分:0)
我为此做了一个黑客解决方案。这看起来不像是一个干净的解决方案。
我的黑客是利用你可以附加到测试中的“小”,“中”和“大”属性。
@MediumTest
public void testPortraitTest1() throws Exception{
this.MetaDataTest(Solo.PORTRAIT);
}
@LargeTest
public void testLanscapeTest1() throws Exception{
this.MetaDataTest(Solo.LANDSCAPE);
}
然后您可以使用批处理文件首先调用中等测试,然后调用大型测试,如下所示:
adb shell am instrument -w -e size medium com.me.client.test/android.test.InstrumentationTestRunner
adb shell am instrument -w -e size large com.me.client.test/android.test.InstrumentationTestRunner
谷歌的耻辱是因为没有让这更容易。
答案 3 :(得分:0)
我这样做的方式是:
在我运行测试之前,我在sdcard \
中保存了一个文本文件当测试开始时,在setUp中,我解析文本文件的每一行并提取键/值
ARG1 = valueX ARG2 = VALUE年