Idea中Junit单元测试

Junit单元测试(以一个springboot项目为例)

新建的springboot项目目录结构如下

知识点学习

利用Assertions类中的静态方法进行断言判断

例:assertEquals判断是否是期望值
package com.yong.unittest;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class UnitTest {
    /*
    * 利用Assertions类中的静态方法进行断言判断
    * */
    @Test
    void unitTest(){
        int result=3;
//        断言
        Assertions.assertEquals(2,result);
    }
}

运行结果

注解@BeforeEach

会在测试之前运行

package com.yong.unittest;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class UnitTest {
    /*
    * 利用Assertions类中的静态方法进行断言判断
    * */
    @BeforeEach
    void each(){
        System.out.println("init");
    }

    @Test
    void unitTest(){
        System.out.println(32);
    }
}

注解@BeforeEach

多个测试时会每次先运行加@BeforeEach的函数

package com.yong.unittest;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class UnitTest {
    /*
    * 利用Assertions类中的静态方法进行断言判断
    * */
    @BeforeEach
    void each(){
        System.out.println("init");
    }

    @Test
    void unitTest1(){
        System.out.println(123);
    }

    @Test
    void unitTest2(){
        System.out.println(456);
    }
}

运行结果

注解@AfterEach

与@BeforeEach相对的是@AfterEach每次测试完后运行

package com.yong.unittest;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class UnitTest {
    /*
    * 利用Assertions类中的静态方法进行断言判断
    * */
    @BeforeEach
    void each(){
        System.out.println("init");
    }

    @AfterEach
    void after(){
        System.out.println("after");
    }

    @Test
    void unitTest1(){
        System.out.println(123);
    }

    @Test
    void unitTest2(){
        System.out.println(456);
    }
}

运行结果

注解@BeforeAll

只初始化一次,但是方法必须是静态的static(与之相对的还有@AfterAll)

package com.yong.unittest;

import org.junit.jupiter.api.*;

public class UnitTest {
    /*
    * 利用Assertions类中的静态方法进行断言判断
    * */

    @BeforeAll
    static void beforAll(){
        System.out.println("init once");
    }
    @BeforeEach
    void each(){
        System.out.println("init");
    }

    @AfterEach
    void after(){
        System.out.println("after");
    }

    @Test
    void unitTest1(){
        System.out.println(123);
    }

    @Test
    void unitTest2(){
        System.out.println(456);
    }
}

运行结果

项目中测试

项目目录结构

服务类Service1

java包中中新建一个服务类Service1

package com.yong.unittest;

import org.springframework.stereotype.Service;

@Service
public class Service1 {

    public int add(int a ,int b){
        return a+b;
    }
}

test包中新建一个类Service1Test

简单粗暴测试方法
package com.yong.unittest;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class ServiceTest {
    @Test
    void serviceTest(){
        int add = new Service1().add(1, 2);
        Assertions.assertEquals(4,add);
    }
}

运行结果

复杂的项目

增加注解@SpringBootTest(作用:会初始化spring的上下文(可以利用@Autowired实现对象注入))

package com.yong.unittest;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest//会初始化spring的上下文(可以利用@Autowired实现对象注入)
public class ServiceTest {

    @Autowired
    Service1 service1;

    @Test
    void serviceTest(){
        int add = new Service1().add(1, 2);
        Assertions.assertEquals(3,add);
    }
}

运行结果

posted @ 2021-02-11 09:47  zhiYong'blog  阅读(250)  评论(0)    收藏  举报