我正在使用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的示例项目提供)提供了一个示例测试项目,该应用程序显示其功能的功能和可轻松使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top