二十一、Junit 的使用

1 Junit单元测试框架

Junit的版本:

  • Junit4
  • Junit5 可以 向后兼容Junit4 jdk必须8以上的版本

单元测试一般在编码完成后进行。

1.1 jar包的引入

我们以Junit5为例(相关资源已上传):

在这里插入图片描述

首先将下载好的jar包解压到本地,将其复制到IDEA的当前路径中

在这里插入图片描述

在IDEA中点击:

在这里插入图片描述

在这里插入图片描述

找到文件文件中的jar包:

在这里插入图片描述

将jar包勾选:

在这里插入图片描述

点击“OK”即可,Junit4同理,相关资源已上传

或者右击该jar包所在的文件夹liba

在这里插入图片描述

在这里插入图片描述

点击OK即可!

2.1 Junit4

Junit单元测试框架的使用
使用步骤:

  1. 引入Junit单元测试框架的jar包

  2. 创建一个待测试类

public class TestMethod {
    public void save(){
        System.out.println("保存成功");
    }
    public void delete(){
        System.out.println("删除成功");
    }
    public void update(){
        System.out.println("更新成功");
    }
    public void select(){
        System.out.println("查询成功");
    }
}
  1. 创建一个测试类
import org.junit.Test;

//测试类
public class MethodDemo {
    @Test   //该方法为测试方法,此时该方法可以像main方法一样执行
    public void testSave(){
        TestMethod tm = new TestMethod();
        tm.save();
    }

    @Test
    public void testDelete(){
        TestMethod tm = new TestMethod();
        tm.delete();
    }

    @Test
    public void testUpdate(){
        TestMethod tm = new TestMethod();
        tm.update();
    }

    @Test
    public void testSelect(){
        TestMethod tm = new TestMethod();
        tm.select();
    }
}

运行结果:

在这里插入图片描述

  1. 其他的注解
	@Before  //在每一个@Test方法执行之前都会执行的方法
    public void init(){
    System.out.println("对象初始化成功");
    }
    @After  //在每一个@Test方法执行之后都会执行的方法
    public void destory(){
        System.out.println("测试成功,释放资源");
    }

由以上两种注解,可以将对象的声明放到前面,即:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

//测试类
public class MethodDemo1 {
    TestMethod tm;  
    @Before  //在每一个@Test方法执行之前都会执行的方法
    public void init(){
        System.out.println("对象初始化成功");
        tm = new TestMethod();
    }
    @Test   //该方法为测试方法,此时该方法可以像main方法一样执行
    public void testSave(){
        tm.save();
    }

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

    @Test
    public void testUpdate(){
        tm.update();
    }

    @Test
    public void testSelect(){
        tm.select();
    }

    @After  //在每一个@Test方法执行之后都会执行的方法
    public void destory(){
        System.out.println("测试成功,释放资源");
    }
}

运行结果:

在这里插入图片描述

1.2 Junit5

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

JUnit Platform:用于启动测试的基础服务,提供了测试的支持

JUnit Jupiter:包含了junit5新的编程的模型和扩展,主要用于编写测试代码和扩展代码,是 junit5 测试的核心

JUnit Vintage:用于兼容Junix3.x 和Junit4.x的测试(兼容低版本)

1.2.1 JUnit4 与 JUnit 5 常用注解对比

在这里插入图片描述

1.2.2 Junit5 的使用

在这里插入图片描述

import org.junit.jupiter.api.*;

@DisplayName("这是unit5的单元测试")
public class Junit5Demo {
    TestDemo td;
    @BeforeAll  //在所有的测试方法执行之前,只执行一次,注意这里是静态方法
    public static void first(){
        System.out.println("项目准备启动");
    }
    @BeforeEach  //在每个测试方法执行之前都会执行的工作
    public void init(){
        td = new TestDemo();
        System.out.println("对象的初始化");
    }
    @Test
    @DisplayName("保存方法的测试")
    public void saveTest(){
        td.save();
    }

    @Test
    @DisplayName("删除方法的测试")
    public void deleteTest(){
        td.delete();
    }

    @AfterEach
    public static void destroy(){
        System.out.println("释放资源");
    }

    @AfterAll  //测试完成后,只执行一次,这里也是静态方法
    public  void complate(){
        System.out.println("项目结束");
    }
}
  • 禁用执行测试(@Disabled)
    @Disabled  //表明该方法测试当前处于禁用状态,在执行测试中不执行
    @Test
    @DisplayName("删除方法的测试")
    public void deleteTest(){
        TestDemo td = new TestDemo();
        td.delete();
    }
  • 重复测试(@RepeatedTest)
    @DisplayName("这是一个重复性测试")
    @RepeatedTest(value = 5)  //表示重复测试5次,该注解不能与@Test同时使用
    public void repeateTest(){
        System.out.println("执行测试");
    }
  • 参数化测试(@ParameterizedTest,与 @ValueSource一起使用)
    @ParameterizedTest  //参数化测试,测试方法可以传参
    @ValueSource(ints = {3,4,5})  //测试的参数的值的集合
    public void parameterTest(int n){
        System.out.println(n%2);
    }
    
    @ParameterizedTest  //不能和Test同时使用,必须和@ValueSource一起使用
    @ValueSource(strings = {"a","b","c"})
    public void strParameter(String str){
        System.out.println(str);
    }

1.2.3 断言测试

  1. 断言测试是一种对测试需要满足条件的一个验证性测试,也是junit5的核心特点

  2. 断言测试的使用:public class Assertions

    API地址:https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/Assertions.html

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

public class junitTest{
    @Test
    @DisplayName("断言测试")
    public void assertTest() {
        //相等性断言
        Assertions.assertEquals(3,1+2,"相等断言");
        //不相等断言
        Assertions.assertNotEquals(1,1+1,"不相等断言");
        //相同性断言
        Object obj = new Object();
        Assertions.assertNotEquals(new Object(),new Object());
        //逻辑断言
        Assertions.assertFalse(1 > 2);
        Assertions.assertTrue(1 == 1);
        //null断言
        Object obj1 = new Object();
        Assertions.assertNotNull(obj1);
        obj1 = null;
        Assertions.assertNull(obj1);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BORN(^-^)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值