前言

junit用于单元测试。

操作步骤

  1. 新建springboot项目(不依赖任何插件,所以不需要选择任何插件)

  2. 引入test依赖(新建项目自动引入了这个依赖,如果没有这个依赖,才需要添加)

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

高版本的springboot(例如:2.6.5)只有junit5没有引入junit4,所以需要导入依赖(如果出现import灰色时,请检查是不是需要导入junit4),但是低版本springboot(例如:2.1.8.RELEASE)的已经引入了junit4,所以不需要引入。

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
  1. 新建service和实现
    HelloService.java
package com.it2.springbootjunit.service;


import org.springframework.stereotype.Service;

public interface HelloService {
       void hello();
}

@Service
class HelloServiceImpl implements HelloService{

    @Override
    public void hello() {
        System.out.println("hello world");
    }
}
  1. 创建测试用例
    HelloServiceTest.java
package com.it2;


import com.it2.springbootjunit.SpringbootJunit01Application;
import com.it2.springbootjunit.service.HelloService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
//设置引导类SpringbootJunit01Application
@SpringBootTest(classes = SpringbootJunit01Application.class)
public class HelloServiceTest {

    @Autowired
    private HelloService helloService;

    @Test
    public void hello(){
        helloService.hello();
    }

}
  1. 运行测试
    在这里插入图片描述

不需要设置引导类

如果测试类与引入类 (@Autowired)是同名包,或者测试类是引入类的子包,则不需要声明引导类,也可以运行。
在这里插入图片描述

下面这个是反例:测试类不是引入类的同名包,也不是其子包,执行报错(提示你的测试需要添加引导类)。(注意:编译语法检查报错不代表程序一定运行不通过)
在这里插入图片描述
在这里插入图片描述

@RunWith(SpringRunner.class)

如果添加@RunWith(SpringRunner.class),则会启动springboot,加载容器,运行会比较慢。
如果测试用例不需要用到可以取消。
下面的demo直观的显示了@RunWith(SpringRunner.class)的区别,如果测试用例未使用到容器里的bean,则不需要该注解。如果使用到了容器的bean,则需要使用该注解。下图中,显然当使用@RunWith(SpringRunner.class)会很慢。
在这里插入图片描述
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐