JUnit5总体介绍

JUnit5是专为Java8及更高版本设计的新一代单元测试框架。它由三个模块组成:JUnitPlatform负责加载测试框架并提供TestEngine API;JUnitJupiter提供编程模型和扩展模型,并实现了一个TestEngine来运行基于Jupiter的测试;JUnitVintage则确保了对旧版JUnit测试用例的兼容性。本文将详细介绍这些模块的功能以及JUnit5中新引入的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JUnit5是什么

官网介绍如下 :
JUnit 5 is the next generation of JUnit. The goal is to create an up-to-date foundation for developer-side testing on the JVM. This includes focusing on Java 8 and above, as well as enabling many different styles of testing.
JUnit 5 is the result of JUnit Lambda and its crowdfunding campaign on Indiegogo.

主要就是说Junit5基于Java8及以上,实现时用到了许多Java8的特性比如Lambda表达式和接口默认方法等
JUnit5分为以下三个模块
1. JUnit Platform 
JUnit platform的职责
  • 加载测试框架到JVM
  • 定义了 TestEngine API 来对测试框架进行扩展
  • 提供了 Console Launcher来支持命令行和 Maven以及Gradle的插件
关键类 : TestEngine、Launcher
2. JUnit Jupiter 
提供了JUnit5的编程模型和扩展模型 
提供了一个TestEngine的实现(JupiterTestEngine)来跑基于Jupiter的测试
3.Junit Vintage
用来跑JUnit低版本的测试用例,保证向下兼容

JUnit5的annotation

JUnit5所有的annotation都放在org.junit.jupiter.api包下
1.和JUnit4等价的注解
  • @Disabled == @Ignore 
  • @BeforeEach == @Before 、 @AfterEach == @After 
  • @BeforeAll == @BeforeClass、 @AfterAll == @AfterClass
2. JUnit5新增的注解
1. @DisplayName : 设置测试类或测试方法的展示内容,在最终结果打印出来时可以看到,内容可以是文本甚至是emoji

@Test
    @DisplayName("╯°□°)╯")
    void testWithDisplayNameContainingEmoji() {
    }

2.@TestInstance : 定义在类上面,用于控制测试类的实例是否是单例的,即该实例是否被该类的所有测试方法共享,即PER_CLASS和PER_METHOD两种模式,定义如下

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    @API(status = STABLE, since = "5.0")
    public @interface TestInstance

3. @ExtendWith:对测试类进行扩展,基于java SPI机制,接口为Extension,作为@Runwith的替代,典型的实现有SpringExtension、MockitoExtension

4. @ParameterizedTest:参数化测试,表示测试方法可以带有参数了

@ParameterizedTest
    @ValueSource(strings = { "Hello", "World" })
    void testWithStringParameter(String argument) {
        assertNotNull(argument);
    }

5. @Tag:给类或者方法打标签,用于进行过滤,类似JUnit4中Categories的概念,可以新定义annotation来达到复制@Tag的效果

@Target({ ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Tag("fast")
    public @interface Fast {
    }

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值