How to start Instrumentation project programmatically using Android Intent?

后端 未结 2 1283
青春惊慌失措
青春惊慌失措 2021-01-01 02:52

one way to start testcase is,

adb shell am instrument 
  -w com.google.vishal.test/android.test.InstrumentationTestRunner 

i want to start

相关标签:
2条回答
  • 2021-01-01 03:19

    This is actually not possible to do, the reason being is that to run instrumentation you need to it via ADB, adb has certain special privileges because of security and therefore can not be run on the phone (As with anything open source, it is of course possible but you would have to rewrite some android and then it would only work on phones you installed that on!).

    May I ask your reason for doing this? If you really need to automate across applications your better choice might be to either us the new android ui test framework or to test only on the emulator and use something that runs on top of the view hierarchy because trying what you are currently is a dead end.

    0 讨论(0)
  • 2021-01-01 03:24

    Command to start instrumentation from adb shell :-

    adb shell am instrument -w com.android.vishal.project.test/android.test.InstrumentationTestRunner   
    

    Android Code to start instrumentation from Android Activity :-

     startInstrumentation(new ComponentName("com.android.vishal.project.test", "android.test.InstrumentationTestRunner"), null, null);
    

    Note :

    Other Method,

    Android Code for start instrumentation (Android 2.3 to Android 4.1.2)

    String str_cmd = "adb shell am instrument -w com.android.vishal.project.test/android.test.InstrumentationTestRunner";
    Runtime.getRuntime().exec(str_cmd);
    

    for Android 4.2 it requires permission "android.permission.INJECT_EVENTS" & which is only allowed by System application. User application can not use this permission because of some security reasons.

    so you can not use Runtime.getRuntime().exec(str_cmd); for Android 4.2 onwards ...

    so now working method is :

     startInstrumentation(new ComponentName("com.android.vishal.project.test", "android.test.InstrumentationTestRunner"), null, null);
    

    execute this command from your Activity.

    Thanks.

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