我有一个Android应用程序,使用谷歌地图显示标记,我期待为地图功能创建自动用户验收测试。我将不得不抓住一个标记并单击它以打开另一个活动。所以我一直在寻找像Robotium,Espresso和UIautomator这样的自动化测试框架,但我找不到任何详细的资料,如代码示例或如何为Android谷歌地图创建自动GUI测试的教程。
有人能告诉我哪种框架最适合实现这种自动化用户验收测试并提供详细信息吗?
提前致谢。
答案 0 :(得分:1)
我必须在uni做同样的事情,我一直在使用Espresso将测试应用到其他UI组件。我还没有开始制作地图,但我找到了可能有用的东西?由于我自己还没有尝试(修改),我不确定。我不得不尝试访问android操作栏,为此我必须参考内容描述。 "向上导航"显然是Home(启用)功能的名称。
onView(withContentDescription("Navigate up")).perform(click()); //appbar home icon
当由于espresso未到达组件而发生故障时,它会列出您在错误输出中测试的活动/片段的所有名称和内容描述。 (见下面的例子)因为这就是我找到我启用的android操作栏组件名称的方式。所以这可能有助于你的标记等。
View Hierarchy:
+>DecorView{id=-1, visibility=VISIBLE, width=540, height=960, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=3}
|
+->LinearLayout{id=-1, visibility=VISIBLE, width=540, height=888, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2}
|
+-->ViewStub{id=16909173, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0}
|
+-->FrameLayout{id=-1, visibility=VISIBLE, width=540, height=850, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=38.0, child-count=1}
|
+--->ActionBarOverlayLayout{id=2131492927, res-name=decor_content_parent, visibility=VISIBLE, width=540, height=850, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2}
|
+---->ContentFrameLayout{id=16908290, res-name=content, visibility=VISIBLE, width=540, height=766, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=84.0, child-count=1}
|
+----->FrameLayout{id=2131492989, res-name=frame_container, visibility=VISIBLE, width=540, height=766, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=1}
|
+------>LinearLayout{id=-1, visibility=VISIBLE, width=540, height=766, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=0}
|
+---->ActionBarContainer{id=2131492928, res-name=action_bar_container, visibility=VISIBLE, width=540, height=84, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2} ...
+------>ImageButton{id=-1, desc=Navigate up, visibility=VISIBLE, width=84, height=84, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0}
如果有效,你可以告诉我吗?
答案 1 :(得分:0)
我尝试使用Robotium创建测试,但它无法与google apis进行身份验证,因为我的应用程序正在调用外部Android功能。
最后,我使用UIAutomator来实现这一系列测试。如果您必须测试与身份验证等外部功能的交互或拍照,则要简单得多。抓住地图标记就像任何其他UI一样简单。
Boo您还可以使用UIAutomatorViewer查看文档结构。