Springboot整合junit单元测试
主要介绍springboot整合junit进行单元测试
一、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
二、编写测试类
代码如下(示例):
@RunWith(SpringRunner.class):运行器指定
SpringRunner.class的作用:
在Spring项目中的Test测试类要使用注入的类,比如@Autowired注入的类或者spring管理的bean的时候,测试类在运行前,需要spring容器运行起来,加上这个@RunWith(SpringRunner.class)注解,就是先运行起来spring容器,再开始运行测试类
@SpringBootTest:
作用是加载ApplicationContext,启动spring容器。使用@SpringBootTest后,Spring将加载所有被管理的bean,基本等同于启动了整个服务,此时便可以开始功能测试。
由于web服务是最常见的服务,且我们对于web服务的测试有一些特殊的期望,所以@SpringBootTest注解中,给出了webEnvironment参数指定了web的environment,该参数的值一共有四个可选值:
MOCK:此值为默认值,该类型提供一个mock环境,可以和@AutoConfigureMockMvc或@AutoConfigureWebTestClient搭配使用,开启Mock相关的功能。注意此时内嵌的服务(servlet容器)并没有真正启动,也不会监听web服务端口。
RANDOM_PORT:启动一个真实的web服务,监听一个随机端口。
DEFINED_PORT:启动一个真实的web服务,监听一个定义好的端口(从application.properties读取)。
NONE:启动一个非web的ApplicationContext,既不提供mock环境,也不提供真实的web服务。
注:如果当前服务的classpath中没有包含web相关的依赖,spring将启动一个非web的ApplicationContext,此时的webEnvironment就没有什么意义了。
@SpringBootTest(classes = Application.class)
@RunWith(SpringRunner.class)
public class test {
@Test
public void test1(){
System.out.println("this is test1");
}
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了springboot整合junit的使用
更多推荐