How to pass an argument to an AndroidTestCase?

前端 未结 3 2128
一向
一向 2020-12-31 18:09

I\'ve implemented an Instrumentation and an AndroidTestCase.

For my tests I need to connect to an external WIFI device. I want the testers to be able to specify an S

相关标签:
3条回答
  • 2020-12-31 18:47

    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"
    
    0 讨论(0)
  • 2020-12-31 18:53

    This sounds like the Parameterised JUnit Test use-case.

    Check out the brief tutorial here - note that you will need to be using JUnit4 and I'm not sure Android's testing framework is ready for that.

    That said, JUnit4 is backward compatible to JUnit3 so in-theory it'll be possible to use JUnit4 annotations under the android test case runner with a bit of build path tomfoolery.

    0 讨论(0)
  • 2020-12-31 19:02

    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.

    0 讨论(0)
提交回复
热议问题