如何写单元测试(5)—Android开发进阶

发表于:2016-6-27 13:25

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

 作者:何红辉    来源:51Testing软件测试网原创

  9.4如何写单元测试
  "不积跬步,无以至千里",因此本节就来学习使用Junit来对代码进行单元测试。在Android测试中,虽然有很多优秀的测试框架来替代Junit,但是由于Junit的简单性,是我们学习测试的最优秀选择。在针对Android平台进行测试时,我们只需要将这些原理移植到Android测试框架上即可。下面我们就基于Eclipse来一步一步学习Junit测试框架。
  9.4.1  第一个单元测试
  如上文所说,单元测试就是验证代码正确性的另一段代码。因此,在测试之前必须要有代码可测。我们首先建立一个用于完成加法操作的类,代码如下:
/**
* 加法接口
*/
public interface Adder {
public int add(int a, int b);
}
/**
* 加法实现类
*/
public class AdderImpl implements Adder {
@Override
public int add(int a, int b) {
return a + b;
}
}
  首先我们定义了一个Adder接口,该接口中定义了一个add方法。AdderImpl中实现了Adder接口,在add函数中将a和b相加并且返回结果。下面我们就新建第一个单元测试类,选择新建Junit Test Case,如图9-1所示。
  下一页界面如图9-2所示。
  
▲图9-1 新建测试用例▲图9-2 界面
  新建的测试类我们命名为AdderTest,该类继承自Junit的TestCase类,选择的目标测试类为AdderImpl,然后单击"下一步"按钮,界面如图9-3所示。
  在图9-3中可以选择需要测试的方法,这里选择的就是add方法,当然也可以直接在测试类中手动添加代码来测试特定的方法。最后选择"finish"。此时在AdderTest中完成相关的测试代码。
/**
* 加法测试类
*/
public class AdderTest extends TestCase {
// 要测试的接口对象
Adder mAdder;
protected void setUp() throws Exception {
mAdder = new AdderImpl();
super.setUp();
}
protected void tearDown() throws Exception {
mAdder = null;
super.tearDown();
}
public void testAdd() {
assertEquals(0, mAdder.add(0, 0));
assertEquals(1, mAdder.add(1, 0));
assertEquals(2, mAdder.add(1, 1));
assertEquals(0, mAdder.add(1, -1));
assertEquals(Integer.MAX_VALUE + 1,
mAdder.add(1, Integer.MAX_VALUE));
assertEquals(Integer.MIN_VALUE - 1,
mAdder.add(-1, Integer.MIN_VALUE));
}
}
 
 ▲图9-3 选择要测试方法
  此时可能会出现找不到TestCase类的错误提示,需要手动将Junit框架引用到你的工程中。在项目上单击右键,在弹出的菜单中选择Properties→Java Build Path→Library项,然后选择 add Library,此时会弹出如图9-4所示的界面。
  选择"finish"之后引入TestCase的包即可。
本文选自《Android开发进阶—从小工到专家》第九章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号