Junit4&Junit5对比

发布时间:2023-05-05 09:28:57

 

Junit是Java编程语言的单元测试框架,用于编写单元测试代码。随着Junit5的普及,它与Junit4有什么不同。

Junit4&Junit5对比_Express

 

JDK支持

Junit4需要Java5+版本

Junit5需要Java8+版本

依赖Maven

Junit4不区分模块,只有一个jar:

<dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.13.2</version>    <scope>test</scope></dependency>

Junit5分为三个模块:

  • junit-jupiter: junit5核心模块为junit5提供了新的编程模型。在junit-platform上运行的测试引擎。
  • junit-platform:平台功能模块,其他测试引擎可以基于此平台访问junit。
  • junit-vintage:用于与junit3、junit4兼容的测试引擎。
<dependency>    <groupId>org.junit.jupiter</groupId>    <artifactId>junit-jupiter</artifactId>    <version>RELEASE</version>    <scope>test</scope></dependency>
springboot版依赖于

spring-boot 2.2版本之前默认使用Junit4;Junit5用于2.2后的版本。

注解区别

Junit5

Junit4

说明

@Test

@Test

注释法是一种测试方法。和 JUnit 4 相同。

@BeforeAll

@BeforeClass

在当前类别中,所有注释的(静态)方法都将被注解 @Test 方法前执行一次。

@BeforeEach

@Before

当前类别中的每一种注释方法都会被注解 @Test 方法前执行。

@AfterEach

@After

当前类别中的每一种注释方法都会被注解 @Test 执行后的方法。

@AfterAll

@AfterClass

在当前类别中,所有注释的(静态)方法都将被注解 @Test 方法后执行一次。

@Disabled

@Ignore

被注解的方法不会执行(跳过),但会报告已执行。

 

Junit4中的@Test是import org.junit.Test;

Junit5中的@Test是import org.junit.jupiter.api.Test;

断言标准

断言方法

说明

assertEquals(expected, actual)

如果 expected 不等于 actual ,断言失败。

assertFalse(booleanExpression)

如果 booleanExpression 不是 false ,断言失败。

assertNull(actual)

如果 actual 不是 null ,断言失败。

assertNotNull(actual)

如果 actual 是 null ,断言失败。

assertTrue(booleanExpression)

如果 booleanExpression 不是 true ,断言失败。

Junit4中断的内容位于org.junit.Assert类;

Junit5中断的内容位于org.junit.jupiter.api.Assertions;

// junit4org.junit.Assert.assertEquals(1.0, 1.0);// junit5org.junit.jupiter.api.Assertions.assertEquals(1.0, 1.0);
测试手法

重复测试:

/** * junit4需要手动newnit4 repeatTest */@Testpublic void repeattest4(){    TestSuite suite = new TestSuite();    // 10表示重复测试次数    suite.addTest(new RepeatedTest(new TestSample(), 10));}/** * 通过使用@Repeatedtest注解法,junit5指定所需的重复次数 */@org.junit.jupiter.api.RepeatedTest(10)public void repeattest5(){    // todo...}
写法差异

Junit5:

import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.assertEquals;public class DemoTest {    @Test    void test() {        assertEquals(2, 1);    }}

Junit4:

package tech.pdai.junit4;import org.junit.Test;import static org.junit.Assert.assertEquals;public class HelloWorldTest {    @Test    public void DemoTest() {        assertEquals(2, 1);    }

可见Junit5写法除了导入包不一致外,还支持非public方法测试。

小结

以上是对一些常见用法差异的总结。Junit5在Junit4的基础上增加了一些新的特性。增加了基于lambda的支持,简化了一些测试技术的编写,如重复测试、参数测试等。Junit5配合mockito等测试框架,使用体验不错。

上一篇 【JUC基础】01. 初步认识JUC
下一篇 java面经

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题