Junit与单元测试

Posted by Csming on 2016-11-26

概述

前段时间,在看JavaWeb视频的时候,看到了老师用Junit 4框架进行单元测试
今天在软工课上,助教哥哥也刚好在教我们使用Junit4框架对Java程序进行单元测试,所以打算记录一下这个东西~


什么是Junit

JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。


如何利用Junit框架进行测试

之前编写的一段测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
	package com.csming.mvcapp.test;

import static org.junit.Assert.*;

import org.junit.Test;

import com.csming.mvcapp.dao.CustomerDAO;
import com.csming.mvcapp.dao.impl.CustomerDAOJdbcImpl;
import com.csming.mvcapp.domain.Customer;

public class CustomerDAOJdbcImplTest {

private CustomerDAO customerDAO = new CustomerDAOJdbcImpl();
@Test
public void testGetAll() {
//customerDAO.getAll();
}

@Test
public void testSaveCustomer() {
Customer customer = new Customer();
customer.setAddress("Beijing");
customer.setName("Niko");
customer.setPhone("13164815528");
customerDAO.update(customer);
}

@Test
public void testGetInteger() {
Customer cust = customerDAO.get(1);
System.out.println(cust);
}

@Test
public void testDelete() {
customerDAO.delete(1);
}

@Test
public void testGetCountWithName() {
long count = customerDAO.getCountWithName("Mike");
System.out.println(count);
}

}

详解

快捷方法

  • 首先,在项目下New一个JunitCase类
  • 其次选择将要进行测试的类,并选择要测试的

  • 如上述代码中的@Test单元,就是相应的测试单元,我们可以在@Test下的方法中调用需要测试的方法
  • 当我们测试时,直接右键要测试的方法,run as:Junit Test就可以进行测试了。
  • 若出错则会相应的报错

不快捷的方法

  • 前面那些步骤,也可以自己定义一个类,并import导入org.junit包
  • 接着说Junit的用法

基础用法

  • @Test,@Before,@After,@BeforeClass,@AfterClass
    1.首先是@Test,前面提到了,这个是一个测试单元
    2.@Before,@After单元用于会在将要测试的之前或者之后执行。这两个单元通常用于实例化类,和资源回收等……
    3.@BeforeClass,@AfterClass单元会在整个测试代码之前或之后执行。
    4.对比@Before,@After & @BeforeClass,@AfterClass。后者在整个过程中只执行一次,而前者在每个测试单元执行前后都会执行
    5.此外,Assert.assertEquals(expected, actual)函数,可以用于测试所需要测试的变量值是否等于预期值
    6.以上为基础用法
    7.此外还有像@RunWith,@IncludeCategory等单元
    8.API传送门:http://tool.oschina.net/apidocs/apidoc?api=junit-4.10

最近发现了一个API文档还不错
暗搓搓收录进来
http://tool.oschina.net/apidocs#J