2015-07-10 145 views
0

我成功在仿真器中運行我的第一個uiautomator測試用例,並且一切正常。但是當我在同一個模擬器中第二次啓動相同的測試案例時。我得到這個錯誤:NullPointer在仿真器上運行uiautomator測試用例時出錯

INSTRUMENTATION_STATUS: stack=java.lang.NullPointerException 
at com.android.uiautomator.core.ShellUiAutomatorBridge.getDefaultDisplay(ShellUiAutomatorBridge.java:50) 
at com.android.uiautomator.core.UiDevice.getDisplayWidth(UiDevice.java:378) 
at com.android.uiautomator.core.UiDevice.click(UiDevice.java:408) 
at test.uiautomator.ApiTest.testCase(ApiTest.java:172) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java:160) 
at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:96) 
at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:91) 
at com.android.commands.uiautomator.Launcher.main(Launcher.java:83) 
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243) 
at dalvik.system.NativeStart.main(Native Method) 

有沒有人知道原因?我沒有修改測試用例中的任何一行,我只是第二次運行它。

+1

請發表您的代碼,該錯誤引用,這樣我們就可以看到那裏的問題可能是, –

回答

0

我檢查了代碼,錯誤發生在這裏:

public Display getDefaultDisplay() { 
    return DisplayManagerGlobal.getInstance().getRealDisplay(Display.DEFAULT_DISPLAY);// Nullpointer here. 
} 

可能becasue DisplayManagerGlobal.getInstance()返回NULL。

見代碼:

/** 
* Gets an instance of the display manager global singleton. 
* 
* @return The display manager instance, may be null early in system startup 
* before the display manager has been fully initialized. 
*/ 
public static DisplayManagerGlobal getInstance() { 
    synchronized (DisplayManagerGlobal.class) { 
     if (sInstance == null) { 
      IBinder b = ServiceManager.getService(Context.DISPLAY_SERVICE); 
      if (b != null) { 
       sInstance = new DisplayManagerGlobal(IDisplayManager.Stub.asInterface(b)); 
      } 
     } 
     return sInstance; 
    } 
} 
+0

HEJ,感謝您的幫助。我也在這裏檢查,但問題是這個函數如何返回null? – gxlzlihao

+0

爲什麼使用DisplayManagerGlobal而不是UiDevice? –

相關問題