使用InstrumentationTestCase的自定义应用程序

时间:2010-11-11 21:22:27

标签: android testing

我有一个ActivityInstrumentationTestCase2(它是InstrumentationTestCase的子类)。运行我的测试用例时,我需要使用自定义的TestApplication对象启动我的活动,因为这个TestApplication对象具有我的测试所需的一些配置。

但是,我没有看到自定义ActivityInstrumentationTestCase2测试用例以使用测试Application对象的方法。有办法吗?

2 个答案:

答案 0 :(得分:6)

我不知道是否有更好的方法,但我能够通过使用自定义的TestRunner来实现这一目标。

public class MyInstrumentationTestRunner extends InstrumentationTestRunner {

    @Override
    public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
        return new MyTestApplication(context);       
    }


}

我还需要修改我的测试项目的AndroidManifest.xml以指定新的跑步者:

<instrumentation android:name="com.mypackage.test.MyInstrumentationTestRunner" ... />

我必须修改我的IDE以使用指定的测试运行器。如果您从命令行运行,则需要执行以下操作:

adb shell am instrument -w com.mypackage/com.mypackage.test.MyInstrumentationTestRunner

答案 1 :(得分:4)

应该是

@Override
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    return Instrumentation.newApplication(YourAppClass.class, context);      
}

因为它正确地将Context注入包装器