Junit5基本使用

JUnit5

测试代码必须写在工程目录 src/test/java 下,建议:不要写在业务代码目录下

  • Test:被该注解修饰的就是测试方法;
  • BeforeAll:被该注解修饰的必须是静态方法,会在所有测试方法之前执行,会被子类继承,取代低版本的BeforeClass;
  • AfterAll:被该注解修饰的必须是静态方法,会在所有测试方法执行之后才被执行,会被子类继承,取代低版本的AfterClass;
  • BeforeEach:被该注解修饰的方法会在每个测试方法执行前被执行一次,会被子类继承,取代低版本的Before;
  • AfterEach:被该注解修饰的方法会在每个测试方法执行后被执行一次,会被子类继承,取代低版本的Before;
  • DisplayName:测试方法的展现名称,在测试框架中展示,支持emoji;
  • Timeout:超时时长,被修饰的方法如果超时则会导致测试不通过;
  • Disabled:不执行的测试方法;
package com.testcase;

import com.util.Calc;
import org.junit.jupiter.api.*;

import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;

@DisplayName("测试用例别名")
public class junitDemoTest {

    /*
     * BeforeAll:被该注解修饰的必须是静态方法,会在所有测试方法之前执行
     */
    @BeforeAll
    public static void init() {
        System.out.println("初始化BeforeAll");
    }

    /*
     * BeforeAll:被该注解修饰的必须是静态方法,会在所有测试方法之后执行
     */
    @AfterAll
    public static void After() {
        System.out.println("AfterAll");
    }

    /*
     * BeforeEach:被该注解修饰的方法会在每个测试方法执行前被执行一次
     */
    @BeforeEach
    public void ca() {
        System.out.println("BeforeEach");
    }

    /*
     * AfterEach:被该注解修饰的方法会在每个测试方法执行后被执行一次
     */
    @AfterEach
    public void AfterE() {
        System.out.println("AfterEach");
    }

    @DisplayName("assertAll")
    @Test
    void add() {
        assertAll("加法",
                () -> assertEquals(22, Calc.add(1, 21)),
                () -> assertEquals(0, Calc.add(0, 0)),
                () -> assertEquals(3, Calc.add(1, 2)));
    }

    /*
    不执行的测试方法
    */
    @Disabled
    @DisplayName("assertEquals")
    @Test
    void fun() {
        int a = 10;
        assertEquals(10, a);
        System.out.println("Disabled");
    }

    /*
     * Timeout:超时时长,被修饰的方法如果超时则会导致测试不通过
     */
    @Timeout(1)
    @Test
    public void time() throws InterruptedException {
        Thread.sleep(1000);
    }
}
  • assertEquals()比较两个值是否相同;

assertEquals("预期结果","实际结果",message)

@Test
    public void eq(){
        int a = 10;
        assertEquals(10,a);
    }
  • assertTrue()判断括号里面的参数是否为true

assertTrue("表达式",message)

@Test
    public void eq(){
        assertTrue('a' < 'b',"断言失败");
        assertTrue(10 == 2,"xxx");
    }
  • assertAll()可以将多个测试语句(断言)放在一起执行,一条失败,则全部失败

assertAll("组名称","测试语句")

@Test
    void add() {
        assertAll("加法",
                () -> assertEquals(22, Calc.add(1, 21)),
                () -> assertEquals(0, Calc.add(0, 0)),
                () -> assertEquals(3, Calc.add(1, 2)));
    }