springboot框架(2):整合junit4
前言junit用于单元测试。操作步骤新建springboot项目引入test依赖(新建项目自动引入了这个依赖,如果没有这个依赖,才需要添加)<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId
前言
junit用于单元测试。
操作步骤
-
新建springboot项目(不依赖任何插件,所以不需要选择任何插件)
-
引入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>
- 新建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");
}
}
- 创建测试用例
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();
}
}
- 运行测试
不需要设置引导类
如果测试类与引入类 (@Autowired)是同名包,或者测试类是引入类的子包,则不需要声明引导类,也可以运行。
下面这个是反例:测试类不是引入类的同名包,也不是其子包,执行报错(提示你的测试需要添加引导类)。(注意:编译语法检查报错不代表程序一定运行不通过)
@RunWith(SpringRunner.class)
如果添加@RunWith(SpringRunner.class),则会启动springboot,加载容器,运行会比较慢。
如果测试用例不需要用到可以取消。
下面的demo直观的显示了@RunWith(SpringRunner.class)的区别,如果测试用例未使用到容器里的bean,则不需要该注解。如果使用到了容器的bean,则需要使用该注解。下图中,显然当使用@RunWith(SpringRunner.class)会很慢。
更多推荐
所有评论(0)