JUnit

Junit单元测试

  • 测试分类
    1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值
    2. 白盒测试:需要写代码的。关注程序具体的执行流程。Junit就是白盒测试
  • 以前编写测试类测试,缺点是
    • 测试一定走main方法,是程序的入口,main方法的格式必须不能写错。
    • 要是在同一个main方法中测试的话,那么不需要测试的东西必须注释掉。
    • 测试逻辑如果分开的话,需要定义多个测试类,麻烦。
    • 业务逻辑和测试代码,都混淆了。
  • Junit使用
    1. 定义一个测试类:把测试类都放在xxx.xxx.test包下,类名是xxxTest
    2. 定义测试方法:方法名是testXXX(),返回值void,无参数。Junit运行测试方法独立运行
    3. 给方法加@Test(别加到类上去)
    4. 导入Junit依赖环境
  • 判断结果
    • 红色为失败,绿色为成功
    • 一般使用断言来处理结果:Assert.assertEquals(long expected, long actual)
  • 其他注解
    • @Before:如果在方法前加上@Before,那么这个方法会在测试方法执行前被自动执行。常在申请资源的方法前加此注解,比如申请数据库资源,申请IO资源,申请网络资源的方法。
    • @After:方法加入了@After注解以后,这个方法会在测试方法执行后被自动执行。常用需要释放资源的方法前加入此注解,如:释放数据库资源,释放IO资源,释放网络资源。

要测试的类

package com.sgp.main;

public class Calculator {
    public int add(int a, int b){
        return a+b;
    }

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

测试类

package com.sgp.test;

import com.sgp.main.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("测试开始了,IO流开始连接");
    }
    @After
    public void close(){
        System.out.println("测试完毕,关闭IO流");
    }
    @Test
    public void testAdd(){
        System.out.println("测试add方法");
        Calculator c = new Calculator();
        int result = c.add(1,2);
        Assert.assertEquals(3,result);
    }
    @Test
    public void testSub(){
        System.out.println("测试sub方法");
        Calculator c = new Calculator();
        int result = c.sub(1,2);
        Assert.assertEquals(result,-1);
    }
}
posted @ 2021-08-29 11:28  黄了的韭菜  阅读(80)  评论(0编辑  收藏  举报