JUnit 是一个 Java 编程语言的单元测试框架。
在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 程序单元是应用的最小可测试部件。简单来说,就是测试数据的稳定性是否达到程序的预期。
分为黑盒测试(功能测试,不需要写代码,输入测试用例看是否输出正确结果)和白盒测试(结构测试,需要写代码的,换主程序的具体执行流程)。而Junit单元测试就是白盒测试的一种。
一、Junit使用
步骤:
1.定义一个测试类:
类名一般为被测试类的类名加Test。
包名一般为xxx.xxx.test
2.定义测试方法:是可以独立运行的:
方法名一般为test加预测试的方法名。
返回值一般为void
参数列表一般空。
3.导入Junit依赖环境:
import org.junit.Test
4.给方法加@Test
errors:0 即代表成功运行。
判定:
那么要怎么样判定结果是否是正确的呢?这就需要设定断言。
如果result和断言的结果不一样,则测试到失败,显示红色。
//计算器类
package firstTest;
public class Calculator {
public int add (int a, int b) {
return a + b;
}
public int sub (int a, int b) {
return a - b;
}
}
//计算器类的测试类
package firstTest;
import org.junit.Test;
//import junit.framework.Assert;
import org.junit.Assert;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator c =new Calculator();
int result = c.add(1, 2);
//System.out.println(result);
//断言:预先断言这个结果是3
Assert.assertEquals(3,result);
}
}
申请资源和释放资源:
在Junit单元测试中,有一个@Before注解,是用作资源的申请。也就是被@Before注解修饰的的方法会在每次测试之前自动执行。所以,我们可以去定义一个init方法,去初始化这个创建对象的过程。
同时,还有一个@After注解,是用作资源的关闭。有些应用场景,比如IO流的读写操作。如果我们要测试此代码,是需要一个关闭流的过程,通过我们关闭流使用finally块来保证最后流的关闭操作。也就是说被@After注解修饰的方法会在测试方法之后自动执行。所以,我们在特定需要保证最后关闭、销毁资源的时候,可以去定义一个close方法,去关闭或销毁资源。
tips:别忘了引入import org.junit.Before; import org.junit.After;
package firstTest;
import org.junit.Test;
import org.junit.After;
//import junit.framework.Assert;
import org.junit.Assert;
import org.junit.Before;
public class CalculatorTest {
@Before
public void init(){
System.out.println("init...");
}
@Test
public void testAdd() {
Calculator c = new Calculator();
int result = c.add(1, 2);
//System.out.println(result);
//断言:预先断言这个结果是3
Assert.assertEquals(3,result);
}
@Test
public void testSub() {
Calculator b = new Calculator();
int result = b.sub(1, 2);
System.out.println(result);
Assert.assertEquals(-1, result);
}
@After
public void close() {
System.out.println("close...");
}
}