How to pass an argument to an AndroidTestCase?
To expand on selalerer's answer, instrumentation test(s) can be started with arguments specified via Gradle:
./gradlew -Pandroid.testInstrumentationRunnerArguments.exampleArgument=hello connectedAndroidTest
You can retrieve instrumentation arguments using:
InstrumentationRegistry.getArguments().getString("exampleArgument") // returns "hello"
Found a solution.
I made my test-runner inherit from InstrumentationTestRunner and took the extra data in onCreate():
public class MyTestRunner extends InstrumentationTestRunner {
public static String BAR;
public void onCreate(Bundle arguments) {
if (null != arguments) {
BAR = (String) arguments.get("foo"));
}
super.onCreate(arguments);
}
}
I added to Android.mk:
LOCAL_JAVA_LIBRARIES := android.test.runner
And to AndroidManifest.xml:
<instrumentation
android:name="com.example.MyTestRunner"
android:targetPackage="com.example" />
Ran it using this command line:
adb shell am instrument -w -e foo the_value_of_bar com.example/com.example.MyTestRunner
I was able to get the 'foo' parameter from the command line and use BAR in my AndroidTestCase.