Junit的使用

1. Junit介绍

Junit是一个成熟的单元测试框架,单元测试是一个对单一实体(类或方法)的测试。

2. 使用Junit

2.1 使用@Test

我们新建一个Calculator类,其中有加、减、乘、除四个成员方法:

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;
    }
    public int div(int a, int b) {
        return a/b;
    }
}

我们不知道Calculator类中的四个方法是否都是正确的,我们可以写一个Junit测试类来测试一下。一般Junit测试类的类名就是所要测试的类的类名加上"Test",因为我们要测试的是Calculator类,所以,我们的测试类的名字就叫做CalculatorTest,同时,还需要注意的是,在项目中,测试类通常都在XXX.XXX.test这个目录下。

除此之外,一个测试类通常和一个类相对应,且测试类中一般会有多个测试方法,每一个方法都对应了类中的方法,测试方法名一般为test+要测试的方法名的首字母大写

package junitDemo;

import org.junit.Test;

public class CalculatorTest {
    
     //使用Test标注来表示这是一个测试方法,
     //写完@Test后,通常编辑器会询问我们是否
     //导入Junit或将Junit加入到类路径中
    @Test 
    public void testAdd() {
        Calculator calculator = new Calculator();
        int result = calculator.add(1, 1);
        System.out.println(result);
    }

}

好了,我们已近写好了一个测试类,其中有一个测试方法,如果你用的编辑器是IDEA,这个测试方法的左边会有一个绿色的运行箭头,点击这个绿色的箭头就可以运行这个测试方法了。如果你用的是Eclipse,双击鼠标左键选中这个测试方法名,右击鼠标,在弹出的窗口中选择Run As,再选择Junit Test,就可以运行这个测试方法了。如果这个方法执行没有问题的话,Junit会显示绿色。

2.2 使用assert类

在使用@Test后,你会发现即使运行结果出现错误,Junit也会显示为绿色,这是因为Junit只会判断测试方法是否能执行成功,而不会去帮你检查运行结果的正确性,要想达到检查运行结果的作用,就需要使用assert类了。
我们将Calculator类中的sub()方法改为如下:

public int sub(int a, int b) {
        return a - b + 1;
    }

很明显,这是错误的,我们将结果多加了一个1。
在CalculatorTest测试类中创建一个测试方法testSub():

 @Test
    public void testSub() {
        Calculator calculator = new Calculator();
        int result = calculator.sub(1, 1);
        //可以直接使用assertEquals()方法而不需要创建Assert对象
        assertEquals(0, result);
    }

注意:
assertEquals()方法有许多重载,我们可以根据自己的需求选择合适的重载方法

运行这个测试方法,你会发现Junit显示为红色,也就是出现了错误,错误信息:

java.lang.AssertionError: expected:<0> but was:<1>

这是一个断言错误,它告诉我们,我们期望的结果是0,但是这个测试方法运行的结果却是1,也就是检测到我们的运行结果不正确了。你可以将Calculator类中的add()方法改正后再来测试一下,你会发现Junit会显示为绿色,也就是测试结果正确。

2.3 使用@Before和@After

@Before注解可以指定在我们测试方法执行之前需要执行的方法,通常用于获取数据库连接或打印日志;同理,@Before注解可以指定在测试方法执行之后需要执行的方法,通常用于释放资源。
下面是一个例子:

 @Before
    public void getConnect() {
        System.out.println("获取了一个连接");
    }
    
    @Test
    public void testMul() {
        Calculator calculator = new Calculator();
        int result = calculator.mul(1, 2);
        assertEquals(2, result);
    }
    
    @After
    public void releaseConnect() {
        System.out.println("释放了连接");
    }

Junit测试结果正确,且在控制台输出了:

获取了一个连接
释放了连接

Junit会在testMul()方法执行之前执行本方法之前被@Before标注的方法,在testMul()方法执行之后,会执行本方法之后被@After标注的方法,这就是Junit中的@Before和@After的作用了。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值