您如何在Android仪器测试中强迫定向变化?
题
我正在使用ActivityInstrumentationTestcase2类为应用程序编写一些接受测试。我想在测试中引起方向变化,以确保发生许多事情。其中包括保留活动状态,但我也想确保使用适当的方向布局。
我知道我可以简单地测试OnSaveInstancestate/onRestoreInstancestate/onpause/onResume/etc。确保实例状态保留的方法。但是,我想知道是否实际上是否存在导致变更事件的机制?
这是否涉及注入某种运动事件来欺骗设备/仿真器认为它已经旋转,或者是仪器提供的实际方法?
谢谢,欢呼!
解决方案
您实际上根本不必使用机器人。实际上,如果您查看机器人的来源,当您致电时所做的一切
solo.setActivityOrientation(Solo.LANDSCAPE);
是
myActivity = this.getActivity(); // In your setUp method()
...
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
其他提示
正如安德鲁克斯写的那样,您可以使用
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(...);
使用机器人。有一个名为独奏的类,您可以通过调用方法来更改方向:
solo.setActivityOrientation(Solo.LANDSCAPE);
就是这样!您的方向将改变。您可以使用Google Robotium并获取其罐子并将其添加到您的测试项目中。 Robotium网站还为Android的记事本应用程序(可作为带有Android SDK的示例项目提供)提供了一个示例测试项目,该应用程序显示其功能的功能和可轻松使用。
不隶属于 StackOverflow