簡體   English   中英

您如何在Android Instrumentation測試中強制更改方向?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM