Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法1 - 条件判断法

Robotium的测试类ActivityInstrumentationTestCase2是继承于Junit3的TestCase类,所以并没有提供Junit4的特性.如网上总结说的
  • 不能通过annotate的方式来识别子类的新特征,如不能实现@beforeclass,@afterclass等特征。只能通过写setup和teardown,
  • TestCase只能以test开头进行测试case书写。
那么有时我们并不想每次开始/完成一个case的时候都做一些重复的动作,也就是要实现Junit4的@beforeclass和@afterclass,该怎么办呢?
以SDK自带的Notepad测试用例作为例子,假如现在我们需要实现两个测试用例
  • testAddNoteCNTittle:创建一个中文标题的笔记
  • testAddNoteEngTitle:创建一个英文标题的笔记
根据实例提供的代码,在setup里面会初始化solo而在teardown里面会关闭所有打开的activities,也就是说每执行一个case都会重新初始化一次solo和关闭所有的activities:
	@Overridepublic void setUp() throws Exception {//setUp() is run before a test case is started. //This is where the solo object is created.super.setUp();this.activity = this.getActivity();this.solo = new Solo(getInstrumentation(), getActivity());}@Overridepublic void tearDown() throws Exception {//tearDown() is run after a test case has finished. //finishOpenedActivities() will finish all the activities that have been opened during the test execution.solo.finishOpenedActivities();}
但事实上我们在这个脚本只是去创建两个Note,并不需要每执行完一个case都要去初始化solo和关闭所有activities。google后没有发现有现成的取代@beforeclass和@aferclass的方法。
以下本人的实现方法
<pre name="code" class="java">package com.example.android.notepad.test;import com.robotium.solo.Solo;import android.test.ActivityInstrumentationTestCase2;
import android.app.Activity;@SuppressWarnings("rawtypes")
public class TCCreateNote extends ActivityInstrumentationTestCase2{private static Solo solo = null;public Activity activity;<span style="white-space:pre">	</span>private static final int NUMBER_TOTAL_CASES = 2;private static int run = 0;private static Class<?> launchActivityClass;//对应re-sign.jar生成出来的信息框里的两个值private static String mainActiviy = "com.example.android.notepad.NotesList";private static String packageName = "com.example.android.notepad";static {try {launchActivityClass = Class.forName(mainActiviy);} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}@SuppressWarnings("unchecked")public TCCreateNote() {super(packageName, launchActivityClass);}@Overridepublic void setUp() throws Exception {//setUp() is run before a test case is started. //This is where the solo object is created.super.setUp(); 
<span style="white-space:pre">		</span>//The variable solo has to be static, since every time after a case's finished, this class TCCreateNote would be re-instantiated// which would lead to soto to re-instantiated to be null if it's not set as staticif(solo == null) {TCCreateNote.solo = new Solo(getInstrumentation(), getActivity());}}@Overridepublic void tearDown() throws Exception {//Check whether it's the last case executed.run += countTestCases();if(run >= NUMBER_TOTAL_CASES) {solo.finishOpenedActivities();}}public void testAddNoteCNTitle() throws Exception {solo.clickOnMenuItem("Add note");solo.enterText(0, "中文标签笔记");solo.clickOnMenuItem("Save");solo.clickInList(0);solo.clearEditText(0);solo.enterText(0, "Text 1");solo.clickOnMenuItem("Save");solo.assertCurrentActivity("Expected NotesList Activity", "NotesList");solo.clickLongOnText("中文标签笔记");solo.clickOnText("Delete");}public void testAddNoteEngTitle() throws Exception {solo.clickOnMenuItem("Add note");solo.enterText(0, "English Title Note");solo.clickOnMenuItem("Save");solo.clickInList(0);solo.clearEditText(0);solo.enterText(0, "Text 1");solo.clickOnMenuItem("Save");solo.assertCurrentActivity("Expected NotesList Activity", "NotesList");solo.clickLongOnText("English Title Note");solo.clickOnText("Delete");}
}
 

Item

Description

Warning

作者

天地会珠海分舵转载请注明出处!

服务平台

自主博客:http://techgogogo.comCSDN博客: http://blog.csdn.net/zhubaitian 微信公众号: 请搜索TechGoGoGo 或扫描: qrcode_for_gh_0388b3c825f5_430  

转载于:https://www.cnblogs.com/techgogogo/p/4284801.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DateTimeFormatInfo 类

From: http://127.0.0.1:47873/help/0-3684/ms.help?methodpage&idT%3ASYSTEM.GLOBALIZATION.DATETIMEFORMATINFO&productVS&productVersion100&topicVersion100&localeZH-CN&topicLocaleZH-CN 定义如何根据区域性设置 DateTime 值的格式并显示这些值…

cisco PIX防火墙的配置及注解完全手册

cisco PIX防火墙的配置及注解完全手册 PIX Version 6.3(1)interface ethernet0 auto 设定端口0 速率为自动interface ethernet1 100full 设定端口1 速率为100兆全双工interface ethernet2 auto 设定端口2 速率为自动nameif ethernet0 outside security0 设 定端口0 名称为 out…

保姆级!!前端必会Taro入门级教学!!

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣获取前端知识 本文将介绍 Taro 是如何从一个为了解决小程序开发问题的框架演变成一个多端统一开发框架的。 使用 React 语法来写小程序 谈一谈小程序开发 微信小程序为我们的业务提供了一种新的展现形态&…

js获取用户当前所在城市(ip)

被安利到一个是搜狐家查询ip地址的接口&#xff1a; http://pv.sohu.com/cityjson?ieutf-8 直接打开效果如下&#xff1a; 依照惯例&#xff0c;例子用法给大家放上来&#xff1a; <script src"http://pv.sohu.com/cityjson?ieutf-8"></script> <…

关于c++跟java区别的几个总结

之前c&#xff0c;最近java有点混乱&#xff0c;总结一下&#xff1a; 1.在写java程序的时候会发现&#xff0c;假如你自己写了一个类class A{。。。}&#xff0c;这个时候你要实例化&#xff0c;必须new一个&#xff1b;但是在c里面就不用&#xff0c;c中你可以直接声明A a; 为…

命令行编译c#源程序

开发环境&#xff1a;WinXP VS2010(C#) using System;public class Test {public static int Main(string[] args){string str DateTime.Now.ToString("HH:mm:ss"); // 时分秒(各占两位)Console.WriteLine("当前时间&#xff1a;{0}", str);return 0;} …

来自山西机器人乐队_格力:中国第一支工业机器人乐队重磅亮相

原标题&#xff1a;格力&#xff1a;中国第一支工业机器人乐队重磅亮相一直以来&#xff0c;格力的董明珠可谓是媒体的关注焦点&#xff0c;前有董小姐与雷军的10亿赌约&#xff0c;后有格力进军手机行业&#xff0c;现在格力更是涉足汽车以及芯片行业&#xff0c;而格力的智能…

Samba将Linux集成到Windows网络

&#xff08;一&#xff09;Samba是一个与Windows操作系统兼容的文件与打印共享服务器,通过在Linux服务器上配置Samba,可以使Linux系统集成到Windows网络中。在网络中,用户可以使用多种方法实现数据共享,例如常见的Web服务、FTP服务。使用这两种网络服务的好处是&#xff1a;它…

Vue、Element-ui项目中如何使用Iconfont(阿里图标库)

我们使用element-ui、vue开发网站的时候&#xff0c;往往图标是起着很重要的作用。 1.傻瓜式引用&#xff1a;由于这种方法及其简单 省去了很多繁琐的步骤&#xff0c; a.引入项目生成的&#xff0c;图标地址。 b.使用 推荐使用这种&#xff0c;详情请看文档&#xff01;&…

Unity与Android交互

转载自 http://www.narkii.com/club/thread-320335-1.html 这段时间在研究嵌入sdk&#xff0c;途中遇到不少问题和坑&#xff0c;在这就不一一说了。嵌入sdk是比较常见的吧&#xff0c;如接入广告啊&#xff0c; 新浪的分享...... 这些都需要接入sdk的。&#xff08;这些我在这…

自定义overflow:auto的滚动条样式

自定义overflow:auto的滚动条样式

angular路由传递参数_Angular路由——在路由时候传递数据

有3种方式1、在查询参数中传递数据2、在路由路径中传递数据定义路由路径时就要指定参数名字&#xff0c;在实际路径中携带参数。3、在路由配置中传递数据一、在查询参数中传递数据第一步&#xff1a;修改模版中商品详情链接&#xff0c;带一个指令queryParams商品详情效果&…

python自动登录百度空间

参考: http://blog.163.com/sunzs20113126/blog/static/3706880920120105131652/ 开发环境&#xff1a;Fedora12 Python2.6.2 #!/usr/bin/python # coding: GBKimport urllib,urllib2,httplib,cookielibdef auto_login_hi(url,name,pwd):url_hi"http://passport.baidu.c…

SQL WITH NOCHECK 和 CLUSTERED | NONCLUSTERED

ALTER TABLE [dbo].[atr_cont_b] WITH NOCHECK ADD CONSTRAINT [PK_atr_cont_b] PRIMARY KEY CLUSTERED ( [id_cont_b] ) ON [PRIMARY] GO WITH NOCHECK: 指定表中的数据是否用新添加的或重新启用的 FOREIGN KEY 或 CHECK 约束进行验证。如果没有指定&#xff0c;对于新约…

PHP 文件上传全攻略

PHP文件上传功能一般都是大家使用事先封装好的函数&#xff0c;要用的时候直接使用已封装的函数就完了&#xff0c;但有时候不能使用封装函数&#xff0c;还真不大能记住PHP的上传相关的东西&#xff0c;在此做个总结&#xff0c;以备后用。1.表单部分 允许用户上传文件&#x…

JS事件-鼠标滚轮事件

JS事件-鼠标滚轮事件 vue 监听滚轮滚动事件

java语言程序设计教程翁恺第二版课后答案_《JAVA语言程序设计教程(第2版)/翁恺 肖少拥》翁恺,肖少拥著【摘要 书评 在线阅读】-苏宁易购图书...

第1章 Java语言概述1.1 Java的历史1.2 Java程序运行环境与特点1.2.1 跨平台(Cross Platform)&#xff0f;可移植性(Portablc)1.2.2 运行效率1.2.3 稳 定1.2.4 简 单1.2.5 动 态1.3 面向对象的基本概念1.3.1 对 象1.3.2 面向对象1.3.3 类1.4 面向对象程序设计的…

Python网页抓取、模拟登录

From: http://www.cnblogs.com/bboy/archive/2010/10/29/1864537.html 用python抓取网页是非常简单的事&#xff0c;简单的几行代码就可以解决。。。这里稍微记录一下 需要引用的包有主要是 urllib2&#xff0c;urllib也可以引入&#xff0c;具体 看代码 #--------------------…