JUnit

单元测试

什么是单元测试呢?单元测试就是针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个Java方法的测试。

JUnit 概述

JUnit是一个Java语言的单元测试框架。专门针对Java设计,使用最广泛。JUnit是事实上的单元测试的标准框架,任何Java开发者都应当学习并使用JUnit编写单元测试。

使用JUnit编写单元测试的好处在于,我们可以非常简单地组织测试代码,并随时运行它们,JUnit就会给出成功的测试和失败的测试,还可以生成测试报告,不仅包含测试的成功率,还可以统计测试的代码覆盖率,即被测试的代码本身有多少经过了测试。对于高质量的代码来说,测试覆盖率应该在80%以上。

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage , 这看上去比Junit4 复杂,实际上在导入包时也会复杂一些。

  • JUnit Platform:是在JVM上启动测试框架的基础。
  • JUnit Jupiter:是JUnit5扩展的新的编程模型和扩展模型,用来编写测试用例。Jupiter子项目为在平台上运行Jupiter的测试提供了一个TestEngine (测试引擎)。
  • JUnit Vintage:提供了一个在平台上运行JUnit 3和JUnit 4的TestEngine 。

依赖

java 复制代码
      <!-- <https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api> -->
      <!--junit-->
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.10.1</version>
        <scope>test</scope>
      </dependency>

所有支持的注解都在包 org.junit.jupiter.api 下 , 使用@Test、@TestTemplate、@RepeatedTest、@BeforeAll、@AfterAll、@BeforeEach或@AfterEach注释的方法不能返回值

注解 说明

  • @Test 表示方法是测试方法。与JUnit 4的@Test注释不同,这个注释不声明任何属性,因为JUnit Jupiter中的测试扩展基于它们自己的专用注释进行操作。
  • @ParameterizedTest 表示方法是参数化测试。
  • @RepeatedTest 表示方法是重复测试的测试模板。
  • @TestFactory 表示方法是动态测试的测试工厂。
  • @TestInstance 用于为带注释的测试类配置测试实例生命周期。
  • @TestTemplate 表示方法是为测试用例设计的模板,根据注册提供程序返回的调用上下文的数量进行多次调用。
  • @DisplayName 声明测试类或测试方法的自定义显示名称。
  • @BeforeEach 表示在当前类中每个@Test、@RepeatedTest、@ParameterizedTest或@TestFactory方法之前执行注释的方法;类似于JUnit 4的@Before。
  • @AfterEach 表示在当前类中的每个@Test、@RepeatedTest、@ParameterizedTest或@TestFactory方法之后,都应该执行带注释的方法;类似于JUnit 4的@After。
  • @BeforeAll 表示应在当前类中的所有@Test、@RepeatedTest、@ParameterizedTest和@TestFactory方法之前执行带注释的方法;类似于JUnit 4的@BeforeClass。
  • @AfterAll 表示在当前类中,所有@Test、@RepeatedTest、@ParameterizedTest和@TestFactory方法都应该执行注释的方法;类似于JUnit 4的@AfterClass。
  • @Nested 表示带注释的类是一个嵌套的、非静态的测试类。@BeforeAll和@AfterAll方法不能直接在 @Nested 测试类中使用,除非使用"每个类"测试实例生命周期。
  • @Tag 用于在类或方法级别声明过滤测试的标记;类似于TestNG中的测试组或JUnit 4中的类别。
  • @Disabled 用于禁用测试类或测试方法;类似于JUnit 4的@Ignore。
  • @ExtendWith 用于注册自定义扩展。

入门案例

java 复制代码
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
 
/**
 * 使用JUnit5进行测试类
 * @author pan_junbiao
 **/
class HelloWorldTest
{
    @BeforeEach
    void setUp()
    {
        System.out.println("@BeforeEach,测试开始");
    }
 
    @AfterEach
    void tearDown()
    {
        System.out.println("@AfterEach,测试结束");
    }
 
    @Test
    void sayHello()
    {
        System.out.println("HELLO SL");
    }
}

更多 : JUnit 5

这期就到这里 , 下期见!

相关推荐
Lizhihao_5 分钟前
JAVA-堆 和 堆排序
java·开发语言
极客先躯10 分钟前
高级java每日一道面试题-2025年3月21日-微服务篇[Nacos篇]-什么是Nacos?
java·开发语言·微服务
工业互联网专业18 分钟前
基于springboot+vue的动漫交流与推荐平台
java·vue.js·spring boot·毕业设计·源码·课程设计·动漫交流与推荐平台
雷渊21 分钟前
深入分析Spring的事务隔离级别及实现原理
java·后端·面试
Smilejudy30 分钟前
不可或缺的相邻引用
后端
惜鸟31 分钟前
Elasticsearch 的字段类型总结
后端
rebel32 分钟前
Java获取excel附件并解析解决方案
java·后端
微客鸟窝34 分钟前
Redis常用数据类型和命令
后端
熊猫片沃子36 分钟前
centos挂载数据盘
后端·centos
微客鸟窝37 分钟前
Redis配置文件解读
后端