从命令行启动android测试时的自定义参数

时间:2012-02-28 19:06:03

标签: java android variables command-line-arguments robotium

我可以从命令行启动我的Android应用程序Junit / Robotium测试,如下所示:

adb shell am instrument -w com.myapp.client.test/android.test.InstrumentationTestRunner

但是,我想以某种方式包含一个自定义参数,允许我指定测试是以“纵向”模式还是“横向”模式运行。

我怎么能:

  1. 在命令行命令中指定自定义参数?

  2. 如何在Java代码中访问该自定义参数的值?

  3. 由于

4 个答案:

答案 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年