![](/img/trans.png)
[英]Instrumentation test for Android - How to receive new Activity after orientation change?
[英]How do you force an orientation change in an Android Instrumentation test?
我正在使用ActivityInstrumentationTestCase2類為應用程序編寫一些驗收測試。 我想從測試中引起方向改變,以確保發生許多事情。 其中包括確保保留Activity狀態,但我還要確保使用適合方向的布局。
我知道我可以簡單地測試onSaveInstanceState / onRestoreInstanceState / onPause / onResume / etc。 確保實例狀態得以保留的方法。 但是,我想知道是否確實存在引起方向改變事件的機制?
這是否涉及注入某種運動事件以欺騙設備/仿真器以為它已經旋轉,還是儀器公司提供了一種實際的方法?
謝謝加油!
實際上,您根本不需要使用Robotium。 實際上,如果您查看Robotium的源代碼,則在調用時
solo.setActivityOrientation(Solo.LANDSCAPE);
是
myActivity = this.getActivity(); // In your setUp method()
...
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
如AndrewKS所寫,您可以使用
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
assertTrue(...);
請求更改方向。 但是旋轉本身是異步執行的。 要在更改方向后真正測試狀態,您需要在請求后等待一小段時間:
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Thread.sleep(50); // depends on performance of the testing device/emulator
assertTrue(...);
使用Robotium。 有一個名為Solo的類,您可以使用該類通過僅調用方法來更改方向:
solo.setActivityOrientation(Solo.LANDSCAPE);
而已! 您的方向將會改變。 您可以在Robotium上用Google搜索並獲取其jar,然后將其添加到Test項目中。 Robotium站點還提供了一個示例,該示例在Android的Notepad App上進行了測試項目(可通過Android SDK作為示例項目獲得),該項目顯示了它的功能強大和易於使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.