JUnit是一个Java单元测试框架,用于编写和运行可重复的测试,于1997年由编程大师Kent Beck和 Erich Gamma开发。最新版本为5.x版本,为JDK 8以及更高的版本上提供更好的支持,例如Lambda、重复测试、参数化测试等。

    JUnit5由以下几个模块组成:

    • JUnit Jupiter:包含JUnit 5新的编程模型和扩展模型,主要用于编写测试代码和扩展代码。
    • JUnit Vintage:用于在JUnit 5中兼容运行JUnit3.x和JUnit4.x的测试用例。
    • JUnit Platform:是在JVM上启动测试框架的基础服务,提供命令行、IDE和构建工具等方式执行测试的支持。JUnit测试引擎的底层实现。

    要使用JUnit,需要进行导包。对于Eclipse,直接导入相应jar包即可。对于Maven项目,需要添加相应依赖:

    1. <!-- 核心功能的依赖 -->
    2. <dependency>
    3. <groupId>org.junit.jupiter</groupId>
    4. <artifactId>junit-jupiter-engine</artifactId>
    5. <version>5.5.2</version>
    6. <scope>test</scope>
    7. </dependency>
    8. <!-- 参数化测试功能的依赖 -->
    9. <dependency>
    10. <groupId>org.junit.jupiter</groupId>
    11. <artifactId>junit-jupiter-params</artifactId>
    12. <version>5.5.2</version>
    13. <scope>test</scope>
    14. </dependency>

    JUnit的使用方法:在方法之前插入注解。注解包括:

    @DisplayName(“测试名”) 标注测试类名和测试方法名 任何
    @Test 标注测试方法 无参无返回值的方法
    @BeforeAll 所有测试方法开始之前,执行一次 静态方法
    @AfterAll 所有测试方法结束之后,执行一次 静态方法
    @BeforeEach 每一个测试方法执行之前,执行一次 非静态方法
    @AfterEach 每一个测试方法执行之后,执行一次 非静态方法
    @Disable 忽略这个测试方法 任何
    @RepeatedTest(value, name) 标注重复测试方法 任何
    @ParameterizedTest 标注参数化测试方法 具有参数的方法
    @ValueSource(valueType = value) 为参数化测试提供参数 具有参数的方法
    • 使用了@RepeatedTest就不能使用@Test注解。
    • @RepeatedTest注解内可以使用以下几个变量:
      • currentRepetition,当前次数
      • totalRepetitions,总次数
      • displayName,测试方法名
    • 使用@ValueSource配合@ParameterizedTest注解,可以表示当前测试方法,需要进行传参测试。 ```java @DisplayName(“测试2”) @RepeatedTest(value = 3, name = “{displayName} 第 {currentRepetition} 次”) // @RepeatedTest(3) 可以省略参数名,表示重复测试3次 void test2() { System.out.println(“ 测试2执行”); }

    @ParameterizedTest @ValueSource(strings = {“tom”,”mary”,”poly”}) // 表示测试3次,依次传入不同的参数 void test3(String name) { System.out.println(“hello!”+name); } ```