我正在使用ActivityInstrumentationTestCase2类为应用程序编写一些验收测试。我想在测试中引起方向更改,以确保发生许多事情。其中包括确保保留Activity状态,同时我还要确保使用适当的方向布局。
我知道我可以简单地测试onSaveInstanceState / onRestoreInstanceState / onPause / onResume / etc。确保保留实例状态的方法。但是,我想知道是否存在导致方向更改事件的机制?
这是否会涉及注入某种运动事件以诱骗设备/仿真器认为它已被旋转,或者是否存在由Instrumentation提供的实际方法?
谢谢&干杯!
答案 0 :(得分:48)
实际上你根本不需要使用Robotium。事实上,如果您在调用
时查看Robotium的来源solo.setActivityOrientation(Solo.LANDSCAPE);
是
myActivity = this.getActivity(); // In your setUp method()
...
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
答案 1 :(得分:5)
正如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(...);
答案 2 :(得分:3)
使用Robotium。 有一个名为Solo的类,使用它可以通过调用方法来改变方向:
solo.setActivityOrientation(Solo.LANDSCAPE);
就是这样!你的方向会改变。 您可以谷歌Robotium并获取其jar并将其添加到您的测试项目。 Robotium网站还在Android的记事本应用程序(可作为Android SDK示例项目)上提供示例测试项目,该项目显示了它的强大程度以及它的使用方式。