测试是企业软件开发不可缺少的一部分。
翻开任何一个优秀的开源框架源码,会发现在测试的包里面有不亚于源码的代码量。如何快速的编写出针对性的测试代码,也是一门绝活。
这里不展开讲解Mockito等测试框架,只针对Spring Boot应用,给出Spring Boot开发中常用的测试方法,帮助你进行快速测试开发。
导入依赖
Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Gradle
testImplemention "org.springframework.boot:spring-boot-starter-test"
注解
@SpringBootTest : 从当前的标记该注解的测试类开始找,直至找到@SpringBootApplication或者@SpringBootConfiguration。就从标记了上述两个注解的类开始扫描bean。
也就是说,你可以在Test类里面自定义项目启动类。
比如:
下面是你的项目启动入口
@SpringBootApplication
@Import(ClassA.class)
public class DemoSpringApplication {
public static void main(String[] args) {
new SpringApplication(DemoSpringApplication.class).run(args);
}
}
如果你的测试类如下
@SpringBootTest
public class WhereToScanTest {
@Test
void works(@Autowired ApplicationContext applicationContext){
Assertions.assertThat(applicationContext.getBean(ClassA.class)).isNotNull();
}
}
那么DemoSpringApplication就会是应用启动类,能够测试通过。
但是如果,你在WhereToScanTest该包下创建一个@SpringConfiguration注解的类,只是简单加上一个@SpringBootConfiguration注解,测试就会失败。
@SpringBootTest
public class WhereToScanTest {
@Test
void works(@Autowired ApplicationContext applicationContext){
Assertions.assertThat(applicationContext.getBean(ClassA.class)).isNotNull();