3

startInstrumentation()を使用してAndroidアプリケーション(起動アプリケーション別)からInstrumentationにアクセスしようとしています。メインアクティビティからstartInstrumentation()を使用して計測を開始するとUiDeviceオブジェクトがスローされるエラー

マイMainActivtyコードはのreturnValueの

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Bundle arguments = new Bundle(); 
     arguments.putString("package", "com.example.per.simpleuiauto"); 
     boolean returnValue = startInstrumentation(new ComponentName("com.example.per.simpleuiauto.test", "android.support.test.runner.AndroidJUnitRunner"), null, arguments); 
     Log.d(TAG, "returnValue: "+returnValue); 
    } 

価値がある、それ

問題を立ち上げた(com.example.per.simpleuiauto)を示した「真」を示し下回っている:計装開始されると、セットアップ()線の下の

mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 

完全なコードではNullPointerExceptionを取得し、呼ばれているが

を下回っています
private static UiDevice mDevice; 
    @Before 
    public void setUp() throws Exception { 
     Log.d(TAG, "setUp: called"); 
     mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 
     mDevice.pressHome(); 
    } 

私の質問は:

  1. これはADBなしでAndroidアプリから計測テストを開始することが可能です?

  2. PC接続なしでapkを起動して計測テストを実行できますか?

(有線または無線ではありません)。以下は

は私のADBクラッシュログです:

15:47:41.788 6578-6578/? I/MonitoringInstrumentation: Instrumentation Started! 
08-31 15:47:41.794 6578-6578/com.example.per.simpleuiauto I/MonitoringInstrumentation: Setting context classloader to 'dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/com.example.per.simpleuiauto.test-2/base.apk", zip file "/data/app/com.example.per.simpleuiauto-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.per.simpleuiauto.test-2/lib/arm, /data/app/com.example.per.simpleuiauto-1/lib/arm, /system/lib, /vendor/lib]]]', Original: 'dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/com.example.per.simpleuiauto.test-2/base.apk", zip file "/data/app/com.example.per.simpleuiauto-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.per.simpleuiauto.test-2/lib/arm, /data/app/com.example.per.simpleuiauto-1/lib/arm, /system/lib, /vendor/lib]]]' 
08-31 15:47:41.798 6578-6578/com.example.per.simpleuiauto I/MonitoringInstrumentation: No JSBridge. 
08-31 15:47:41.806 6578-6596/com.example.per.simpleuiauto D/InfraTrack: Tracking disabled due to lack of internet permissions 
08-31 15:47:41.806 6578-6596/com.example.per.simpleuiauto I/UsageTrackerFacilitator: Usage tracking disabled 
08-31 15:47:41.807 6578-6596/com.example.per.simpleuiauto I/TestRequestBuilder: Scanning classpath to find tests in apks [/data/app/com.example.per.simpleuiauto.test-2/base.apk] 
08-31 15:47:41.921 6578-6596/com.example.per.simpleuiauto D/TestExecutor: Adding listener android.support.test.internal.runner.listener.LogRunListener 
08-31 15:47:41.921 6578-6596/com.example.per.simpleuiauto D/TestExecutor: Adding listener android.support.test.internal.runner.listener.InstrumentationResultPrinter 
08-31 15:47:41.921 6578-6596/com.example.per.simpleuiauto D/TestExecutor: Adding listener android.support.test.internal.runner.listener.ActivityFinisherRunListener 
08-31 15:47:41.924 6578-6596/com.example.per.simpleuiauto I/TestRunner: run started: 2 tests 
08-31 15:47:41.928 6578-6596/com.example.per.simpleuiauto I/TestRunner: started: testAdd(com.example.per.simpleuiauto.CalculatorTester) 
08-31 15:47:41.930 6578-6578/com.example.per.simpleuiauto I/MonitoringInstrumentation: Activities that are still in CREATED to STOPPED: 0 
08-31 15:47:41.938 6578-6596/com.example.per.simpleuiauto I/TestRunner: failed: testAdd(com.example.per.simpleuiauto.CalculatorTester) 
08-31 15:47:41.938 6578-6596/com.example.per.simpleuiauto I/TestRunner: ----- begin exception ----- 
08-31 15:47:41.941 6578-6596/com.example.per.simpleuiauto I/TestRunner: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.UiAutomation.setOnAccessibilityEventListener(android.app.UiAutomation$OnAccessibilityEventListener)' on a null object reference 
                       at android.support.test.uiautomator.UiAutomatorBridge.setOnAccessibilityEventListener(UiAutomatorBridge.java:78) 
                       at android.support.test.uiautomator.QueryController.<init>(QueryController.java:58) 
                       at android.support.test.uiautomator.UiAutomatorBridge.<init>(UiAutomatorBridge.java:66) 
                       at android.support.test.uiautomator.InstrumentationUiAutomatorBridge.<init>(InstrumentationUiAutomatorBridge.java:35) 
                       at android.support.test.uiautomator.UiDevice.<init>(UiDevice.java:103) 
                       at android.support.test.uiautomator.UiDevice.getInstance(UiDevice.java:262) 
                       at com.example.per.simpleuiauto.CalculatorTester.naveen(CalculatorTester.java:32) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
                       at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
                       at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
                       at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
                       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
                       at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 
                       at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 
                       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
                       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
                       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
                       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
                       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
                       at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
                       at org.junit.runners.Suite.runChild(Suite.java:128) 
                       at org.junit.runners.Suite.runChild(Suite.java:27) 
                       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
                       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
                       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
                       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
                       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
                       at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
                       at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
                       at org.junit.runner.JUnitCore.run(JUnitCore.java:115) 
                       at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:59) 
                       at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:262) 
                       at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2022) 
08-31 15:47:41.942 6578-6596/com.example.per.simpleuiauto I/TestRunner: ----- end exception ----- 

答えて

0

テストがadbから開始されていない場合は、UiDeviceインスタンスを取得することはできません。

関連する問題