如何从活动中获取菜单参考

时间:2011-06-01 19:11:11

标签: android android-activity menu junit

我正在为Android项目编写JUnit测试脚本。我打算测试的是活动中的选项菜单项(您知道,通过按菜单键调用的菜单)。

但是,在我们的项目中,菜单是从某些互联网内容动态生成的。 最重要的是,Menu对象是我们的活动对象中的私有变量。

现在我的问题是,如何验证此菜单(验证其菜单项数,每个项目上的文本等)。

3 个答案:

答案 0 :(得分:1)

要测试菜单项的调用,您可以使用Instrumentation.invokeMenuActionSync()

答案 1 :(得分:0)

你通常这样做的方法是在java中使成员包私有(没有限定符),然后让你的junit测试与托管菜单的类(可能是你的活动)在同一个java包中。

单元测试不必通过物理位于同一个包文件夹中,只要两个类在运行时具有相同的包。

答案 2 :(得分:0)

您将使用PhoneWindow引用菜单对象。它有一个名为“PanelFeatureState”的私有静态final类,这个类包含一个名为“MenuBuilder菜单”的字段,你需要反射来访问这个类及其字段。  菜单充气器读取xml资源文件并将菜单存储在此对象中。

总结:  PhoneWindow-> PanelFeaturestate-> MenuBuilder菜单

您可以使用以下命令从活动中获取对PhoneWindow的引用: activity.getWindow()