Junit4单元测试要点

时间:2022-07-16 05:08:17

    最近公司在用单元测试测试已经写好的系统代码,作为刚入职的员工,开始学习起的单元测试和Junit4的用法,下面记录一些在使用Junit4进行单元测试的要点,以便以后学习工作使用。

一、单元测试介绍

   单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在像C++这样的面向对象的语言中, 要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型地划分为一个菜单或显示界面。

传统的编程方式,进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看是否有错。正因为如此麻烦,所以程序员们编写单元测试的热情不是很高。于是有一个牛人推出了单元测试包,大大简化了进行单元测试所要做的工作,这就是JUnit4

二、使用要点

1.测试方法上必须使用@test进行修饰

2.测试方法必须使用public void进行修饰,并且不能带任何参数

3.新建一个源代码目录存放测试代码

4.测试类包应该和被测试类一致

5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖

6.测试类名推荐使用test作为后缀

7.测试方法推荐使用test作为前缀

8.测试用例是用来证明你没有错,而不能证明你是对的;

  测试用例用来达到预期的结果,但是对于逻辑错误无能为力

9.测试失败的两种情况:

  (1)Failure一般由单元测试使用的断言方法判断失败所引起的,这表示经测试点发现了问题,就是说程序输出的结果和我们预期的不一样。

  (2)error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。

10.@Beforeclass修饰的方法会在所有方法被调用前执行

    而且该方法是静态的,所以当测试类加载后他会继续执行

    而在内存中他只存在一份实例,比较适合加载配置文件

11.@Afterclass所修饰的方法通常用来对资源的清理,如关闭数据库的连接

12.@Before和@After会在每个测试方法执行前后各执行一次

13.@Test:将一个普通的方法变为测试方法

   @Test(expected=XX.class)抛出异常

   @Test(timeout=毫秒)

14.Ignore:所修饰的测试方法会被测试运行期忽略

15.Runwith:可以更改测试运行期 org.junit.runner.Runner

三、Junit 测试套件

测试套件就是组织测试类一起运行的

写一个作为测试套件的入口类,这个类不包含其他方法

更改测试运行器Suite.class

将要测试的类作为数组传入到Suite.SuiteClass({})Junit4单元测试要点

四、Junit的参数化设置

1.更改默认的测试运行器为RunWith(Parameterized.class)

2.声明变量来存放预期值和结果值

3.声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰

4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值