2014-07-11 205 views
1

我這樣做是爲了退出應用程序,使用Android UIAutomator。當我們按下兩次後退按鈕這就是爲什麼我打電話了兩次junit.framework.AssertionFailedError:後退按鈕無法按下

assertTrue("Back button can't be pressed", getUiDevice().pressBack()); 

assertTrue("Back button can't be pressed", getUiDevice().pressBack()); // This line will giving exception. 

我的應用程序將退出。

但是

然後它會給我例外。

但是當我這樣做手動返回兩次它將完美工作。

的例外是:

junit.framework.AssertionFailedError: Back button can't be pressed 
     at com.android.jdsu.automation.youtube.YoutubeUiTest.exitApplicaion(Yout 
ubeUiTest.java:487) 
     at com.android.jdsu.automation.youtube.YoutubeUiTest.testYouTube(Youtube 
UiTest.java:208) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAuto 
matorTestRunner.java:160) 
     at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutoma 
torTestRunner.java:96) 
     at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.ja 
va: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) 

INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner 
INSTRUMENTATION_STATUS: test=testYouTube 
INSTRUMENTATION_STATUS: class=com.android.jdsu.automation.youtube.YoutubeUiTest 
INSTRUMENTATION_STATUS: stack=junit.framework.AssertionFailedError: Back button 
can't be pressed 
     at com.android.jdsu.automation.youtube.YoutubeUiTest.exitApplicaion(Yout 
ubeUiTest.java:487) 
     at com.android.jdsu.automation.youtube.YoutubeUiTest.testYouTube(Youtube 
UiTest.java:208) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAuto 
matorTestRunner.java:160) 
     at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutoma 
torTestRunner.java:96) 
     at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.ja 
va: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) 

回答

0

有趣的,你有沒有嘗試添加兩個電話之間的等待時間。您的應用程序可能需要一些時間來重新加載上次活動。增加至少500毫秒或1秒的等待時間。

+0

返回false是我還在兩次調用之間使用了'Thread.sleep(3000)',但它仍會給出相同的異常。 –

1

雅我也經歷過同樣的問題,但沒有得到爲什麼會發生這種情況。 我知道它使用如下:

UiDevice device = UiDevice.getInstance(); 
device.pressMenu(); 

這對我來說工作得很好。 否則你也可以用keyevent如下:

Runtime.getRuntime().exec("/system/bin/input keyevent 82"); 
1

assertTrue("Back button can't be pressed", getUiDevice().pressBack());

它將返回false,如果UI未pressBack()後改變,如果目前在主頁視圖會後getUiDevice().pressBack());