I have an ActivityInstrumentationTestCase2 (which is a subclass of InstrumentationTestCase). When running my testcases, I need to launch my activities using a custom TestApplication object, since this TestApplication objects has some configuration necessary for my tests.
However, I don't see a way to customize my ActivityInstrumentationTestCase2 testcases to use the test Application object. Is there a way to do so?
I don't know if there's a better way, but I was able to accomplish this by using a custom TestRunner.
public class MyInstrumentationTestRunner extends InstrumentationTestRunner {
@Override
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
return new MyTestApplication(context);
}
}
I also needed to modify my test project's AndroidManifest.xml to specify the new runner:
<instrumentation android:name="com.mypackage.test.MyInstrumentationTestRunner" ... />
And I had to modify my IDE to use the specified test runner as well. If you're running from the command line, you'll need to do something like the following instead:
adb shell am instrument -w com.mypackage/com.mypackage.test.MyInstrumentationTestRunner
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With