阅读更多

5顶
0踩

移动开发

原创新闻 Android UI 测试框架 zinc30 发布

2012-12-06 10:04 by 见习记者 chasezjj 评论(0) 有6047人浏览
Zinc30是一个强大的Android UI自动化测试框架,支持建立健壮、可维护的黑盒测试用例。RD或者QA能够基于场景设计功能级和系统级测试。Zinc30符合Webdriver的 API规范,以更好地面向对象编程的方式来操作Android控件,同时全面支持Web UI测试中流行的PageFactory模式。

项目地址:https://code.google.com/p/zinc30/

GettingStart

使用Zinc30需要将zinc.jar包放入Android Test Project中并加入到build path之中,同时需要在AndroidManifest.xml的manifest元素下加入:

对于使用Zinc30的示例项目请在downloads区下载 zinc30-sample.zip包,里面包含两个项目,zinc30-sample是被测项目,采用mvp模式书写;zinc30-sample- test是测试项目,采用PageFactory模式来书写测试用例。两个项目导入到eclipse即可直接运行。

示例演示

这里以测试登陆功能为例,假如有两个Activity,其中一个为LoginView,主要是登陆页面,另一个为MainView,主要是登陆成功后跳转的页面。这里也采用PageFactory模式来书写,先写ActivityPage:
public class LoginViewPage extends BaseActivityPage {

        public LoginViewPage(Zinc zinc) {
                super(zinc);
        }

        @FindBy(id = R.id.username)
        private AndroidElement usernameEdit;

        @FindBy(type = AndroidElementType.EditText, index = 1)
        private AndroidElement passwordEdit;

        @FindBy(type = AndroidElementType.Button, text = "登陆")
        private AndroidElement loginButton;

        public MainViewPage login(String username, String password) {
                usernameEdit.clear();
                usernameEdit.sendKeys(username);

                passwordEdit.clear();
                passwordEdit.sendKeys(password);

                loginButton.click();
                return new MainViewPage(zinc);
        }

}

可以看到,这个Page页面主要包括测试过程中需要操作的元素以及动作,其中元素查找有3种方法:

  1. 根据id来查找,即自动生成的R文件中的id值;
  2. 根据文本来查找,需要带上元素类型。比如@FindBy(type = AndroidElementType.Button, text = "登陆")为查找写有登陆文字的Button控件。如果元素类型不确定可以使用Unkown类型;
  3. 根据索引来查找,需要带上元素类型。比如@FindBy(type = AndroidElementType.EditText, index = 1)为查找第二个EditText控件。这里index以0标识第一个元素。
接下来我们来看Test Case如何来书写,其实Test case主要组合已有的ActivityPage类:
public class LoginViewTest extends ZincTestCase<loginview> {

        public LoginViewTest() {
                super("com.baidu.zinc30.sample", LoginView.class);
        }

        public void testLoginSuccess() {
                LoginViewPage loginViewPage = new LoginViewPage(zinc);
                MainViewPage mainViewPage = loginViewPage.login("zinc", "zinc");

                Assert.assertTrue("should login success",
                                mainViewPage.isActivityPresent(MainView.class));
        }
}

我们写测试用例的时候需要继承ZincTestCase,它主要完成zinc对象的初始化。虽然在Test Case这层可以使用zinc对象,但我们鼓励将操作封装在ActivityPage层。

总结

Zinc30是全面支持PageFactory模式的(可以参考:http://chon.techliminal.com/page_object/#/intro),因为它有3方面的优点:

  1. 减少重复代码,将页面状态的改变和迁移封装在页面对象之中;
  2. UI的变动只会影响到相应页面对象而不会影响到上层的test case;
  3. 能够在不同的test case中重用页面对象。
对于某些操作不在WebDriver的API中,比如滑动屏幕、点击Listview中的某一行或者返回上一页等操作,我们在ActivityPage层直接使用zinc对象,它完全兼容Robotium的所有动作。
5
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 服务器与Tomcat区别

    学习Tomcat服务器,它叫服务器,后面又看其他的教学视频出现一个阿里云服务器。(ECS)我当时领取了一个月。两个感觉完全不搭着边 使用云服务器(ECS)我确实可以访问自己编写的小页面了当时挺高兴的 接下来我会将我...

  • Tomcat服务器简介

    前言:本文章是Java Web后端技术系列的第二篇,主要介绍Tomcat服务器,接下来将持续更新,感兴趣的小伙伴欢迎持续关注。因为我也是刚接触Java web方面的知识,尚有许多不足,如有错误欢迎指正! 介绍 Tomcat是Apache...

  • Tomcat10版本避坑

    * Tomcat版本选择** Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和 并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。并且Tomcat的版本选择...

  • 谈谈为什么选择使用小程序及小程序的优缺点20171219

    最近有个移动项目关于饮料行业经销商及业务员管理的,主要功能有... 项目初期考虑做APP,先用安卓尽快出个1.0版本,一来现有人员可以马上上手,二来开发相对较快、可以通过1.0版本验证及完善需求;然后再开发IOS版...

  • 使用Apache+Tomcat比单独使用Tomcat的优缺点

    单独使用的优点:配置方便、安全漏洞少(比如利用大小写的JSP下载) 那什么情况下需要使用Apache+Tomcat呢?...如果你需要负载均衡的话,Apache+Tomcat+modjk是一个选择,利用它,你可以把应用服务器拆分成多个服务

  • J2EE进阶之tomcat服务器搭建,HTTP协议 八

    tomcat服务器搭建,HTTP协议服务器 * WEB 网页 javaweb 使用java语言开发动态的网页 * C/S client/server 客户端/服务器 例子:QQ 快播 暴风影音 * 优点:交互性好,下载客户端。服务器压力小。 * 缺点:如果...

  • macOS下载、安装、使用tomcat服务器及IntelliJ IDEA for Mac 如何集成、配置、运行tomcat

    服务器:安装了服务器软件的计算机 服务器软件:接收用户的请求,处理请求,做出响应 web服务器软件:接收用户的请求,处理请求,做出响应。 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目

  • Tomcat基本使用以及项目部署。

    ▶ 概述HTTP协议(HyperText Transfer Protocol) : 主要定义通信规则,是超文本传输协议,规定了浏览器和服务器之间数据传输的规则。数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。浏览器...

  • 企业级WEB应用服务器TOMCAT

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML静态资源页面的功能,它还是一个Servlet和JSP容器...

  • 后端---javaweb和tomcat服务器简介

    学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范,启动界面如图:  2、IIS  Microsoft的Web服务器产品为Internet Information Services (IIS),IIS 是允许在公共Intranet...

  • 关于springboot内置tomcat和外部独立部署tomcat差别

    前两天,我去面了个试,面试官问了我个问题,独立部署的tomcat跟springboot内置的tomcat有什么区别,为什么存在要禁掉springboot的tomcat然后将项目部署到独立的tomcat当中?我就想,不都一个样?独立部署的tomcat...

  • myeclipse未能启动服务器,myeclipse启动服务器时,tomcat出错问题

    启动服务器,错误提示:Launching web on myeclipse tomcat has encountered a problemAn internal error occurred during:"Launching web on myeclipse tomcat"解决办法:1、首先关闭myeclipse工作空间2、删除工作...

  • Tomcat:Web服务器软件

    从原先个人的Gitee搬运:《Tomcat:Web服务器软件》 文章目录Tomcat:web服务器软件安装目录结构启动可能遇到的问题中文乱码黑窗口一闪而过启动报错暴力温柔访问查看IP地址关闭正常关闭强制关闭部署/配置项目的方式...

  • javaweb、http、tomcat、servlet

    /bin/sh JAVA_OPTS='-server -Xms1024m -Xmx1024m XX:PermSize=128M -XX:MaxPermSize=256M' 为什么使用tomcat做服务器,而不是nginx? 从应用方面 tomcat,一般是做动态解析才会用得到,支持jsp的解析,需要配置JDK...

  • 说一说solr在tomcat,jetty上的运行和安装优缺点

    Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化 Solr可以独立运行,运行在...

  • 关于tomcat和jetty对比(不喜欢jetty的勿看)

    首先转载下别人总结的文章 相同点: 1.Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的...Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。 2.性能比较 Jetty和Tomc...

  • Web服务器—Tomcat

    Web服务器—Tomcat 备注:该技术博客的内容是我根据技术视频整理与总结的(并非复制粘贴)。取自黑马JavaWeb课程。 一、概述 首先学习汤姆之前,我们应该先理解一个概念,什么是服务器? 服务器:安装了服务器软件的...

  • Myeclipse学习总结(17)——Java主流IDE优缺点分析

    不同的IDE,都有其优点和缺点。选择时,你肯定想要借鉴下开发人员们的不同意见。 在评估Java IDE时要考虑的一些关键因素: 1.IDE是否是跨平台的 2.是否有多语言支持 3.它是否支持流行的Web框架 4.它是否具有...

  • Tomcat集群的三种负载均衡方式优缺点对照

     DNS轮询的缺点是,当集群中某台服务器停止之后,用户由于dns缓存的缘故,便无法访问服务,必须等到dns解析更新,或者这台服务器重新启动。还有就是必须把集群中的所有服务端口暴露给外界,没有用apache做前置代理...

  • 1446-基于51单片机的气压检测(MPX4115,上位机,LCD)proteus,原理图、流程图、物料清单、仿真图、源代码

    1446-基于51单片机的气压检测(MPX4115,上位机,LCD)proteus,原理图、流程图、物料清单、仿真图、源代码 资料介绍: 1、使用气压传感器MPX4115检测气压 2、利用LCD1602显示气压 3、把气压值上传到上位机 有哪些资料: 1、仿真工程文件 2、源代码工程文件 3、原理图工程文件 4、流程图 5、功能介绍 6、元件清单 7、上位机软件 8、演示视频

Global site tag (gtag.js) - Google Analytics