Java Demo - JUnit :Unit Test(Assert Methods)

If a developer wants to test methods or processing logic, we can use the JUnit framework to test our backend code. This content uses the Java language to create a simple demo to show how to use the assert parameter to complete unit tests.

1.For Mave project - add dependency

add JUnit dependency:if you are using Maven,you can add the dependency to your pom.xml file

XML 复制代码
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>

2.Creat a Java Demo to be test

java 复制代码
public class UnitTestDemo  {

    public int add(int i,int j){
        return i+j;
    }

    public boolean compareValue(int i, int j){
        return i > j;
    }

    public int addAndThowException(int i, int j){
        if(i!=0 || j!=0) {
            return i+j;
        }else {
            throw new RuntimeException();
        }
    }

    public void displayMsg(int i){
        if(i==1) {
            System.out.println("When i euqals 1 display this sentence");
        }
    }
}

3.Creat a JUnit test class

@BeforeEach: executed before each test method

@AfterEach: executed after each test method

@BeforeAll: executed once before all test methods

@AfterAll: executed once after all test methods

@Test: is used to mark test methods

java 复制代码
public class UnitTestDemoTests {

    private static UnitTestDemo unitTestDemo;
    private static final ByteArrayOutputStream outContent = new ByteArrayOutputStream();

    @BeforeAll
    public static void createCommand() {
        unitTestDemo = new UnitTestDemo();
        System.setOut(new PrintStream(outContent));
    }

    @Test
    public void testNull() {
        Object obj = new Object();
        assertNotNull(obj);
        obj = null;
        assertNull(obj);
    }

    @Test
    public void testArrayEquals() {
        int[] expected = {1, 2, 3};
        int[] actual = {1, 2, 3};
        assertArrayEquals(expected,actual);

        List<Integer> expectedList = Arrays.stream(expected).boxed().collect(Collectors.toList());
        List<Integer> actualList = Arrays.stream(actual).boxed().collect(Collectors.toList());
        assertIterableEquals(expectedList,actualList);
    }

    @Test
    public void add_testEquals() {
        int result = unitTestDemo.add(2,3);
        assertEquals(5,result);
    }

    @Test
    public void compareValue_testResult() {
        boolean equalsTrue = unitTestDemo.compareValue(3,2);
        assertTrue(equalsTrue);
        boolean equalsFalse = unitTestDemo.compareValue(2,3);
        assertFalse(equalsFalse);
    }


    @Test
    public void add_testNotEquals() {
        int result = unitTestDemo.add(2,3);
        assertNotEquals(4,result,"2 + 3 不应等于 4");
    }

    @Test
    public void addAndThowException_testEquals() {
        int result = unitTestDemo.addAndThowException(2,3);
        Assertions.assertDoesNotThrow(() -> result);
        assertEquals(5,result,"2 + 3 应等于 5");

    }

    @Test
    public void addAndThowException_testThowException() {
        int i=0,j=0;
        assertThrows(RuntimeException.class,() -> unitTestDemo.addAndThowException(i,j));
    }

    @Test
    public void displayMsg_test() {
        Assertions.assertDoesNotThrow(() -> unitTestDemo.displayMsg(1));
        assertTrue(
                outContent.toString()
                        .endsWith("When i euqals 1 display this sentence" + System.lineSeparator())
        );
        assertEquals("When i euqals 1 display this sentence"
                +System.lineSeparator(), outContent.toString());

    }

}
相关推荐
M1A14 分钟前
Java集合框架深度解析:LinkedList vs ArrayList 的对决
java·后端
Top`9 分钟前
Java 泛型 (Generics)
java·开发语言·windows
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ33 分钟前
如何使用Java WebSocket API实现客户端和服务器端的通信?
java·开发语言·websocket
是小崔啊1 小时前
tomcat源码02 - 理解Tomcat架构设计
java·tomcat
没有bug.的程序员1 小时前
JAVA面试宝典 -《安全攻防:从 SQL 注入到 JWT 鉴权》
java·安全·面试
栈溢出了1 小时前
MyBatis实现分页查询-苍穹外卖笔记
java·笔记·mybatis
31535669131 小时前
Springboot实现一个接口加密
后端
morningcat20181 小时前
java17 gc笔记
java·jvm·笔记
2 小时前
Unity开发中常用的洗牌算法
java·算法·unity·游戏引擎·游戏开发
Your易元2 小时前
设计模式-模板方法模式
java·设计模式·模板方法模式