单元测试工具JUnit与Jacoco的配置与使用
简介
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。
特性
JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:
1、用于测试期望结果的断言(Assertion)
2、用于共享共同测试数据的测试工具
3、用于方便的组织和运行测试的测试套件
4、图形和文本的测试运行器
注解
| 注解 | 描述 |
|---|---|
| @Before | 初始化方法,在任何一个测试执行之前必须执行的代码; |
| @After | 释放资源,在任何测试执行之后需要进行的收尾工作。在每个测试方法执行之后执行一次,该annotation只能修饰public void 方法; |
| @Test | 测试方法,表明这是一个测试方法。在Junit中将会自动被执行。该annotation只你呢个修饰public void 方法。 |
| @Ignore | 忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”; |
| @BeforeClass | 针对所有测试,只执行一次,且必须为public static void;一般用于初始化必要的消耗较大的资源,例如数据库连接等 |
| @AfterClass | 针对所有测试,将会在所有测试方法执行结束后执行一次,且必须为public static void; |
断言
| 方法 | 描述 |
|---|---|
| void assertEquals(boolean expected, boolean actual) | 检查两个变量是否相等 |
| void assertTrue(boolean condition) | 检查条件为真 |
| void assertFalse(boolean condition) | 检查条件为假 |
| void assertNotNull(boolean object) | 检查对象不为空 |
| void assertNull(Object object) | 检查对象为空 |
| void assertTrue(boolean condition) | 检查两个相关对象是否指向同一个对象 |
| void assertNotSame(boolean condition) | 检查两个相关对象是否不指向同一个对象 |
| void assertArrayEquals(expectedArray, resultArray) | 检查两个数组是否相等 |
平台
Eclipse,jdk8,EclEmma Java Code Coverage
测试背景
在eclipse中新建java项目并创建被测试类与被测试方法。
安装JDK
根据自己主机选择相应的jdk版本,这里我选择的是jdk-8u281-windows-x64;
选择路径并点击安装
安装完成之后到刚刚安装jdk的文件夹下,复制路径
桌面右键计算机->属性->高级系统设置—>环境变量
新建环境变量JAVAHOME,path(有则追加),值为刚刚复制的路径
完成之后,按super+R,输入cmd,进入cmd后再输入javac,如若出现jdk配置信息,则表明JDK安装成功。
Eclipse 安装
下载地址
下载完成之后解压。打开eclipse.exe
创建一个Java项目
新建测试类
测试类代码
public class Software {
private static 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(;;) {
; //死循环
}
}
public void clear(){
result = 0;
}
public int getResult() {
return result;
}
}
JUnit的安装配置
Junit同Eclipse一同提供,无需下载。如若没有JUnit,可在eclipse安装路径下plugins文件夹中找到。
一、配置
1.第一步 右击项目名,点击Properties(属性)

2.在弹出的属性栏中依次点击Java Build Path,Libraries,Add Library...

3.点击JUnit->JUnit4,即可成功导入JUnit包。

二、生成测试框架
- 右击SoftWare(被测试类),新建测试框架,具体步骤如图。



2.勾选需要测试的方法,此处选择4个方法,勾选后点击Finish

3.在生成的SoftWareTest文件中写入测试用例
public class SoftwareTest {
private static Software sw = new Software();
@Before
public void setUp() throws Exception {
sw.clear();
}
@Test
public void testAdd() {
sw.add(2);
sw.add(3);
assertEquals(5, sw.getResult());
}
@Test
public void testSubstract() {
sw.add(10);
sw.substract(2);
assertEquals(8, sw.getResult());
}
@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
}
@Test
public void testDivide() {
sw.add(8);
sw.divide(2);
assertEquals(4, sw.getResult());
}
}
4.修改完成后在Test类上右击,选择Run As->JUnit Test

输出结果

其中,绿色对勾代表测试通过,红色叉代表测试失败,斜杠代表忽略
testAdd,testDivide方法测试通过,testSubstract测试失败,testMultiply被忽略。
三、断言的使用
创建一个类
public class assertTest {
@Test
public void testAssertions() {
//测试数据
String str1 = new String ("abc");
String str2 = new String ("abc");
String str3 = null;
String str4 = "abc";
String str5 = "abc";
int val1 = 5;
int val2 = 6;
String[] expectedArray = {"one", "two", "three"};
String[] resultArray = {"one", "two", "three"};
//检查两组数据是否相等
assertEquals(str1, str2);
//检查条件为真
assertTrue (val1 < val2);
//检查条件为假
assertFalse(val1 > val2);
//检查对象不为空
assertNotNull(str1);
//检查对象为空
assertNull(str3);
//检查两个对象是否指向同一个对象
assertSame(str4,str5);
//检查两个对象是否不指向同一个对象
assertNotSame(str1,str3);
//检查两个数组是否相等
assertArrayEquals(expectedArray, resultArray);
}
public static void main(String[] args) {
Result result = JUnitCore.runClasses(assertTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
完成后点击运行,输出检查结果
Jacoco安装与使用。
简介:
Jacoco的出发点是为基于JVM运行的代码提供代码覆盖率统计,期望提供轻量级的、可伸缩的、文档较全的库文件来集成各类构建和开发工具。在Eclipse中我们使用EclEmma插件来帮助我们完成Jacoco覆盖率分析。
安装:
在eclipse中依次点击Help-》Eclipse Marketplace。在弹出的窗口中搜索EclEmma,完成后点击安装。

安装完成后顶部标签栏中点击此按钮

展开各类与方法即可观察到方法的的测试覆盖率。

导出测试报告
右击测试的类名
选择Export Session
点击Format选择输出格式
一共提供了四种格式,这里我们选择HTML
Destination选择输出位置
完成之后点击Finish,即可在刚刚选定的路径中生成测试报告
打开文件夹中的index.html文件即可看到测试报告














浙公网安备 33010602011771号