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,一经查实,立即删除!

相关文章

保姆级!!前端必会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> <…

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;这些我在这…

深入分析Flex [Bindable] (总结)

[Bindable]大概又是Flex用得最多的元数据了。刚开始用用确实好简单&#xff0c;效率真是没的说。不过这几天用着却碰到了些问题&#xff0c;我自己搜集了些资料&#xff0c;想着有必要在blog里总结一下吧。啥是元数据&#xff08;metadata&#xff09;知道就跳过吧。今天不晓得…

MFC让窗口最前端显示

基于对话框的MFC应用程序&#xff0c;环境&#xff1a;Win XP VC2010。程序界面&#xff1a; 接着为IDC_CHECK1绑定一个BOOL类型的变量m_bShowTopmost&#xff0c;并添加BN_CLICKED事件响应函数&#xff1a; void CWorkHelperDlg::OnBnClickedCheck1() {UpdateData();if(m_bSh…

HTML DOM console.table() 方法

HTML DOM console.table() 方法

百度之后,电子银行还安全么?

用户&#xff1a;百度在哪里啊&#xff1f;百度在哪里&#xff1f;***&#xff1a;百度就在小朋友的心里&#xff01;用户&#xff1a;银行在哪里啊&#xff1f;银行在哪里&#xff1f;***&#xff1a;银行就在我家里&#xff0c;这里没有防盗门啦&#xff01;这里没有监控啦。…

利用IDA6.6进行apk dex代码动态调试

网上公开IDA6.6已经有一段时间&#xff0c;这个版本有个好处就是可以动态调试java代码。正好现在需要动态调试&#xff0c;所以顺便练习一下。 根据android的官方文档&#xff0c;如果要调试一个apk里面的dex代码&#xff0c;必须满足以下两个条件中的任何一个&#xff1a; 1.a…

换了一块硬盘

不知不觉T400的小黑已经伴我走过了一年的时间&#xff0c;终于今天要给它换一块比较快的硬盘&#xff0c;7200.4希捷笔记本硬盘&#xff0c;下面是测试的数据 在网络查了下&#xff0c;好像性能还不错&#xff0c;只是显卡性能一般了一些。。。

jvm 堆 比例_JVM调优原则

JVM调优原则调优目标将进入老年代的对象数量降到最低减少 Full GC 的执行时间在同样场景下&#xff0c;采用多个机器上进行参数调整后的比较验证&#xff0c;将验证能够提高性能的参数应用到最终所有服务器上。一般常规满足下列不需要优化Minor GC执行时间不到50ms&#xff1b;…

64位虚拟机下asm()语法_用Hyper-V在win10中创建虚拟机,简单快捷,不用安装其它软件...

运行虚拟机是使用操作系统的好方法&#xff0c;因为无需在电脑上安装它&#xff0c;例如&#xff0c;你可以毫无风险地试用最新的Windows 10试用版或新的Ubuntu(Linux)发行版。以下是如何在Windows 10中创建虚拟机的方法。认识Windows 10中的Hyper-V微软提供了一个称为Hyper-V的…

测试晶面间距软件_纳米材料粒度测试方法大全

纳米材料是指三维空间尺寸中至少有一维处于纳米数量级 (1~100 nm)&#xff0c;或由纳米结构单元组成的具有特殊性质的材料&#xff0c;被誉为“21世纪最重要的战略性高技术材料之一”。当材料的粒度大小达到纳米尺度时&#xff0c;将具有传统微米级尺度材料所不具备的小尺寸效应…

CDHtmlDialog 与 网页交互技巧

From: http://blog.csdn.net/catxl313/article/details/2204541 CDHtmlDialog可以方便的将网页嵌入对话框&#xff0c;使得在程序设计中人机界面&#xff08;DHTML网页&#xff09;与控制逻辑&#xff08;CDialog&#xff09;可以很好的分离&#xff0c;下面是一些实用技术与技…

java 盘符 系统_001-Java再回首开篇-入门基础

来我们一起了解下java背景突然想着&#xff0c; 整理一套从基础开始的文章吧&#xff0c;对自己来讲是回顾基础和复习&#xff0c;对他人来讲&#xff0c;能有一点点绵薄的帮助&#xff0c;我也是很欣慰了呢&#xff0c;希望能帮你少走点弯路。自己整理的&#xff0c;如有勘误&…

js 如何去除字符两端的引号

通过js 提供的substring()就可以直接去除引号。&#xff08;注意是小写&#xff0c;和java不同&#xff09; var str JSON.stringify("sasasa"); console.log(str); var str str.substring(1,str.length-1); console.log(str);

asic面试题目 英伟达_免笔试!不限量!全球可编程图形处理技术领袖英伟达2021校园招聘火热进行中!...

关注并标星大同学吧每周1次&#xff0c;打卡阅读快速获取行业最新资讯秋意浓&#xff0c;渐微凉校招逐渐收尾不少同学陆陆续续开始签约还在观望决意不定的同学英伟达还没结束&#xff01;筹谋已久的英伟达2021校园招聘终于来啦&#xff01;拥有全世界最酷的AI计算机发明主办最顶…

C++真的能够王者归来吗?

From: http://blog.csdn.net/adwu73/article/details/7230048 C真的能够王者归来吗&#xff1f; 吴穹Adam 我个人认为不太可能&#xff01;因为不能光看C改进了什么&#xff0c;有什么优点&#xff1f;而要看环境&#xff0c;看对手&#xff01; 这篇博客不想写太长&#xff0c…