SpringBoot 集成JUnit

Posted chy_18883701161

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 集成JUnit相关的知识,希望对你有一定的参考价值。

 

项目太大,不好直接测整个项目,一般都是切割成多个单元,单独测试,即单元测试。

直接在原项目上测试,会把项目改得乱七八糟的,一般是单独写测试代码。

 

进行单元测试,这就需要集成JUnit。

 

 


 

 

(1)在pom.xml中添加JUnit的依赖

        <!--JUnit的起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <!--指定作用域为test,此依赖只在test时起作用-->
            <scope>test</scope>
        </dependency>

使用骨架、Spring Initializr创建项目时,往往自动导入了Junit的依赖,看一下pom.xml中有没有,没有就导入。

 

 


 

 

 

(2)在src/test/java中写单元测试

src/main/用来写项目,java放.java文件,resources放资源文件(根目录下放application.yml,static下放静态资源,templates下放模板引擎)。

src/test/用来写项目测试,java放单元测试,resources放资源文件。

 

把src/main/resources中的内容拷到src/test/resources,没有resources文件的就自己新建。

 

单元测试的类名一般是在原类名后加Test。

比如我要写com.chy.mapper.UserMapper的单元测试,在src/test/java下新建com.chy.mapper.UserMapperTest,包名保持一致,类名加Test。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)  //引导类的class对象
public class UserMapperTest {
    @Autowired  //自动注入要测试的类
    private UserMapper userMapper;

    @Test
    public void queryUserByIdTest(){
        //测试该类中的方法
        User user=userMapper.queryUserById(1);
        System.out.println(user);
    }

}

把要测试的类写成成员变量,使用@Autowired注入。

 

要测该类中的哪个方法,就写一个对应的方法来测试,在方法上标注@Test。

方法名一般是原方法名+Test。如果只测试一个方法,常把方法名直接写成test。

 

点左边的三角进行测试。

 

 


 

 

有些方法需要注入一些值,把要注入的值写成成员变量,对象用@Autowired注入,基本类型用@Value直接注入值。

 

如果需要在测试方法执行前后做一些处理:

    @Before
    public void before(){

    }

    @Test
    public void test(){
       
    }

    @After
    public void after(){

    }

这个测试类中的所有测试方法都会执行前处理、后处理。

 

 


 

 

一般要保留测试代码,比如要测试queryUserById()、updateUserById(),是写对应的2个测试方法,不是先写queryUserById()来测试,测完就在这个方法的基础上改改,改成其他方法的测试,不是这样的。

同理,测试类都是在对应位置写、单独写,包也要保留,这些测试合起来就是整个项目的测试。

 

以上是关于SpringBoot 集成JUnit的主要内容,如果未能解决你的问题,请参考以下文章

Springboot集成JUnit5优雅进行单元测试

springboot集成junit测试与javamail测试遇到的问题

SpringBoot2——数据访问的集成 & 单元测试(JUnit5)

Spring Boot JPA 元模型不能为空!尝试运行 JUnit / 集成测试时

springboot+mybatisplus junit测试遇到的问题

使用 Spring Boot 2.1.15.RELEASE(junit 4) 进行集成测试的 Bean 自动装配为 null