Junit测试
之前的JavaSE部分的笔记在有道云笔记上:Map,List集合,Set集合,日期时间类,泛型,包装类,Java Collections工具类(Comparable和Comparator),Iterator
在正式进入JavaWeb的学习之前,我们还要对JavaSE中的一些知识进行收尾。
测试分类:
- 黑盒测试:不需要写代码,给输入值,看程序能否输出期望值
- 白盒测试:需要写代码,关注程序具体执行流程
Junit使用
步骤:
- 定义一个测试类
- 建议:
- 测试类名:被测试的类Test(如CalculatorTest)
- 包名:xxx.xxx.xxx.test(如edu.qing.test)
- 定义测试方法:可以独立运行
- 建议:
- 方法名:test测试的方法名,如testAdd()
- 返回类型:void
- 参数列表:空参
- 给方法加
@Test
注解
例子:我们先创建一个Calculator.java类,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| package CalculatorClass;
public class Calculator { public int add(int a, int b){ return a+b; } public int sub(int a,int b){ return a-b; } public int mul(int a,int b){ return a*b; } }
|
然后创建test包,在其中创建CalculatorTest.java类,代码如下:
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
| package test;
import CalculatorClass.Calculator; import org.junit.Assert; import org.junit.Test;
public class CalculatorTest { @Test public void testAdd(){
Calculator calculator = new Calculator(); int addResult = calculator.add(1, 3); System.out.println(addResult); int subResult = calculator.sub(1, 3); System.out.println(subResult); int mulResult = calculator.mul(1, 3); System.out.println(mulResult); Assert.assertEquals(4,addResult); Assert.assertEquals(-2,subResult); Assert.assertEquals(3,mulResult); } }
|
Junit中的@Before和@After注解
Junit4中的相关注解
例子:将上述CalculatorTest.java类改造如下:
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
| package test;
import CalculatorClass.Calculator; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test;
public class CalculatorTest {
@Before public void init(){ System.out.println("执行初始化方法操作"); }
@After public void close(){ System.out.println("执行释放资源操作"); }
@Test public void testAdd(){
Calculator calculator = new Calculator(); int addResult = calculator.add(1, 3); System.out.println(addResult); int subResult = calculator.sub(1, 3); System.out.println(subResult); int mulResult = calculator.mul(1, 3); System.out.println(mulResult); Assert.assertEquals(4,addResult); Assert.assertEquals(-2,subResult); Assert.assertEquals(3,mulResult);
} }
|
执行效果如下:
方法的测试与否,取决于方法上是否加了@Test
注解。这样可以让方法独立执行而不依赖于主方法,方便测试