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());

    }

}
相关推荐
_院长大人_33 分钟前
设计模式-工厂模式
java·开发语言·设计模式
码事漫谈1 小时前
C++死锁深度解析:从成因到预防与避免
后端
凌波粒1 小时前
MyBatis完整教程IDEA版(2)--ResultMap/注解/一对多/多对一/lombok/log4j
java·intellij-idea·mybatis
码事漫谈1 小时前
智能体颠覆教育行业:现状、应用与未来展望调研报告
后端
蓝-萧1 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
priority_key1 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
韩立学长1 小时前
基于Springboot的旧时月历史论坛4099k6s9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
汤姆yu3 小时前
基于SpringBoot的动漫周边商场系统的设计与开发
java·spring boot·后端
皮皮林5513 小时前
快速解决 Maven 版本冲突指南 !
java·maven
灰小猿3 小时前
Spring前后端分离项目时间格式转换问题全局配置解决
java·前端·后端·spring·spring cloud