JUnit使用方法以及测试代码覆盖率
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Junit
一、什么是junit
采用测试驱动开发的方式,在开发前先写好测试代码,主要说明被测试的代码会被如何使用,错误处理等,然后开始写代码。并在测试代码中逐步测试这些代码。直到最后在测试代码中完全通过。
二、Junit功能
1)管理测试用例。修改了哪些代码。这些代码的修改会对哪些部分由影响,通过junit将这次的修改做完成测试。
2)定义了测试代码,textcase根据源代码的测试需要定义每个textcase,并将Textcase添加到相应的Textsuit以方便管理。
3)定义测试环境,在Textcase测试前会先调用“环境”配置。在测试中使用,当然也可以在测试用例中直接定义测试环境。
4)检测测试结果。对于每种正常、异常情况下的测试,运行结果是什么。
结果是够是我们预料的等。都需要有明确的定义。Junit在这方面提供了强大的功能。
三、Junit核心类
Textsuit:测试用例的集合
Textcase:定义运行多个测试用例
TextListener:测试中若产生事件,会通知TextListener
BaseTextRunner:TextRunner用来启动测试界面
TextResult:收集一个测试案例的结果。测试结果分为失败和错误。
Assert:当条件成立时,assert方法保持沉默,但若条件不成立就抛出异常
四、使用举例
4.1方法一:
第一步、新建一个Android项目JUnit_Test,file-new-android project,然后编写一个Calculator类,new java class,实现简单的加、减、乘、除的计算器,然后对这些功能进行单元测试。
类的代码如下:
package com.neusoft;
public class Calculator {
private int result;
public void add(int n) {
result = result + n;
}
public void substract(int n) {
result = result - 1; //Bug: 正确的应该是 result =result-n
}
public void multiply(int n) {}
public void divide(int n) {
result = result / n;}
public void square(int n) {
result = n * n;}
public void squareRoot(int n) {
for (; ;) ; //Bug : }
public void clear() {
result = 0;
}
public int getResult() {
return result;}
}
第二步、将JUnit4单元测试包引入这个项目:在该项目上点右键,点“属性”,在弹出的属性窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在最右边点击“Add Library…”按钮,然后在新弹出的对话框中选择JUnit4并点击确定,JUnit4软件包就被包含进我们这个项目了。
第三步、在Eclipse的Package Explorer中用右键点击该类弹出菜单,选择new—选择“J unit Text Case”。在弹出窗口,选择new JUnit 4 text,在which method stubs would you like to creat?处选择setUp。点击“next”后,系统会自动列出你这个类中包含的方法,选择你要进行测试的方法。此处,我仅对“加、减、乘、除”四个方法进行测试。点击Finish后,系统会自动生成一个新类CalculatorTest,里面包含一些空的测试用例。只需要将这些测试用例稍作修改即可使用。完整的CalculatorTest代码如下:
package com.neusoft;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.Ignore;
public class CalculatorTest {
private static Calculator calculator = new Calculator();
@Before
public void setUp() throws Exception {
calculator.clear();
}
@Test
public void testAdd() {
calculator.add(2);
calculator.add(3);
assertEquals(5, calculator.getResult());
}
@Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());
}
@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
fail("Not yet implemented");
}