JUnit4笔记(一)---概述和简单使用

来源:互联网 发布:守护小天使app软件 编辑:程序博客网 时间:2024/06/05 05:29

1、JUnit概述

1.1 什么是JUnit

①JUnit是用于编写可复用测试集的简单框架,是xUnit的一个子集。xUnit是一套基于测试驱动开发的测试框架,有PythonUnit、CppUnit、JUnit等。
②Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。
③多数Java的开发环境都已经集成了JUnit作为单元测试的工具,比如Eclipse。

1.2 为什么要使用测试工具

①测试框架可以帮助我们对编写的程序进行有目的地测试,帮助我们最大限度地避免代码中的bug,以保证系统的正确性和稳定性。
②很多人对自己写的代码,测试时就简单写main,然后sysout输出控制台观察结果。这样非常枯燥繁琐,不规范。缺点:测试方法不能一起运行,测试结果要程序猿自己观察才可以判断程序逻辑是否正确。
③JUnit的断言机制,可以直接将我们的预期结果和程序运行的结果进行一个比对,确保对结果的可预知性

1.3 相关链接

JUnit官网:http://junit.org/
JUnit的jar包下载:https://github.com/junit-team/junit/wiki/Download-and-Install

2、简单使用

首先需要在myeclipse中导入junit包,右键项目->build path->add library会弹出这个框,选择添加JUnit就可以


这里写图片描述

为了便于维护,我们的测试类最好放在与项目代码分离的目录里面,同时我们的测试类所在包名最好和被测试类的包名一致,比如:


这里写图片描述

这里我们对类Calculator进行测试,我们新建一个source folder为test,在test目录中我们新建的包名和Calculator类所在包的包名一致。

Calculator类有简单的四个方法:

public class Calculator {    public int add(int a,int b){        return a+b;    }    public int del(int a,int b){        return a-b;    }    public int mul(int a, int b){        return a*b;    }    public int divide(int a, int b){        return a/b;    }}

要生成对应类的测试方法,可以手动创建,也可以快捷的借助eclipse创建,推荐后者。
创建方法就是:右键被测试类->new->other->Junit,在弹出的框中选择JUnit Test Case,然后选择test case所在的目录和包


这里写图片描述
这里写图片描述

默认情况下,系统给出的测试类的类名是方法名+Test。然后点击next,会弹出这个框,悬着要测试的方法名就可以了:


这里写图片描述

这样系统会自动给出测试方法的模板,在模板里面写出我们的测试代码就可以了,这里我的测试代码如下:

public class CalculatorTest {    @Test    public void testAdd() {        assertEquals(13, new Calculator().add(4, 9));    }    @Test    public void testDel() {        assertEquals(3,new Calculator().del(5, 2));    }    @Test    public void testMul() {        assertEquals(9,new Calculator().mul(3, 3));    }    @Test    public void testDivide() {        assertEquals(3,new Calculator().divide(9, 3));    }}

右键测试类run as->JUnit Test,如果出现绿条就说明测试通过,在这里会全部通过:


这里写图片描述

3、两种测试失败的情况

3.1 Failures

如果我们在Del方法中设置预期值是4:

@Test    public void testDel() {        assertEquals(4,new Calculator().del(5, 2));//设置预期值是4    }

运行结果就会出现错误:


这里写图片描述

这里显示的错误是Failures

3.2 Errors

如果在divide()方法的测试中,我们这样写:

@Test    public void testDivide() {        assertEquals(3,new Calculator().divide(9, 0));    }

测试结果为:


这里写图片描述
显示的是Errors

Failures与Errors的区别:
①Failure一般由单元测试使用的断言方法判断失败所引起的,这经表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。
②Error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。

4、总结

使用JUnit需要注意的几点是:
①测试方法上必须使用@Test进行修饰
②测试方法必须使用public void 进行修饰,不能带任何的参数
③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开
④测试类所在的包名应该和被测试类所在的包名保持一致
⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
⑥测试类使用Test作为类名的后缀(不是必须)
⑦测试方法使用test作为方法名的前缀(不是必须)

原创粉丝点击