Robolectric介绍—Android应用测试指南(10)

发表于:2016-3-23 09:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李江    来源:51Testing软件测试网原创

  10.7  Robolectric介绍
  Robolectric(http://pivotal.github.com/robolectric/)是一个单元测试框架,它会拦截Android类,然后重写方法的实现。Robolectric重定义了Android方法,因此它们都会返回默认值,比如null、0又或者false。并且,如果把他们方法调用,它会唤起影子对象,提供Android的行为活动。
  这里提供了大量的影子对象,不过不可能全部覆盖,而是一步步改善。因此,你应该把它当做一个不断演进的开源工程,你也可以对它进行改进。不过,要用这个东西也要小心,因为你会发现你想用的一些功能可能还没实现。不过,即使这样,也不能掩盖它未来的光芒。
  10.7.1  安装Robolectric
  Robolectric可以在Maven中心文档(http://repol.maven.org.maven2/com/pivotallabs/robolectric/)
  中下载robolectric-<version>-jar-with-dependencies.jar来完成安装。在写这本书的时候,最新可下载的版本是robolectric-0.9.8-jar-with-dependencies.jar,下面也是基于这个版本来举例的。
  你还可以很方便地下载相应的Javadoc,把它放到工程属性的库中,因此你可以从Eclipse里打开文档。
  10.7.2  新建一个JAVA工程
  为了保持组织结构一致,我们跟前面章节一样,新建一个java工程。这次我们会加入下面的库。
  "  Robolectric-<version>-jar-with-dependencies.jar。
  "  AndroidSDK中的Android.jar。
  "  AndroidSDK中的maps.jar包。注意这是安装SDK时,选择性安装的包。
  "  Junit 4.
  10.7.3  编写一些测试用例
  我们再重写几个之前的用例来熟悉Robolectric的用法。
  EditNumber的测试用例是重写的一个好例子。我们先新建一个EditNumberTests类,这次是在新建的工程中,然后把TemperatureConverterTest工程中的EditNumberTests文件拷贝过来,如框10.26所示。
  框10.26
package com.example.aatg.tc.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.example.aatg.tc.EditNumber;
import com.xtremelabs.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class EditNumberTests {
private static final double DELTA = 0.00001d;
private EditNumber mEditNumber;
  在前面的代码片段,我们定义了包。在这个用例中,我们这里还是跟之前一样,定义为com.example.aatg.tc.test。用@RunWith标签来声明测试执行器。接下来,定义mEditNumber字段来保存EditNumber的值,如框10.27所示。
  框10.27
@Before
public void setUp() throws Exception {
mEditNumber = new EditNumber(null);
mEditNumber.setFocusable(true);
}
@After
public void tearDown() throws Exception {
}
@Test
public final void testPreconditions() {
assertNotNull(mEditNumber);
}
/**
* Test method for {@link com.example.aatg.tc.EditNumber#
EditNumber(android.content.Context, AttributeSet attrs,
int defStyle)}.
*/
@Test
public final void testEditNumberContextAttributeSetInt() {
final EditNumber e = new EditNumber(null, null, -1);
assertNotNull(e);
}
  这段代码包含了平常的setup()和tearDown()方法,接着是testPreconditions()测试。在setUp()方法中,我们新建一个EditNumber变量,初始化是null值,然后将焦点设置在EditNumber上面,如框10.28所示。
本文选自《Android应用测试指南》第十章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
性能和压力测试—Android应用测试指南(8)
其他测试策略—Android应用测试指南(9)
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号