资料内容:
6.8.3. 测试 Spring Boot Application
Spring Boot应用程序是一个Spring
ApplicationContext,所以除了通常对普通Spring上下文的测试外,不需要做什么特别的测
试。
NOTE
只有当你使用 SpringApplication 来创建时,Spring
Boot的外部属性、日志和其他功能才会默认安装在上下文中。
Spring Boot提供了一个 @SpringBootTest 注解,当你需要Spring
Boot功能时,可以用它来替代标准的 spring-test @ContextConfiguration
注解。该注解通过SpringApplication创建测试中使用的ApplicationContext来工作。除了
@SpringBootTest 之外,还提供了其他一些注解,用于测试应用程序的更多具体片断。
TIP
如果你使用JUnit 4,不要忘记在你的测试中也添加
@RunWith(SpringRunner.class),否则注解会被忽略掉。如果你使用的是
JUnit 5,就不需要添加等价的
@ExtendWith(SpringExtension.class),因为 @SpringBootTest
和其他的 @…Test 注解已经被注解了。
默认情况下,@SpringBootTest 不会启动一个服务器。你可以使用 @SpringBootTest 的
webEnvironment 属性来进一步完善你的测试运行方式。
• MOCK(Default) : 加载一个Web ApplicationContext
并提供一个模拟的Web环境。当使用此注解时,嵌入式服务器不会被启动。如果你的classp
ath上没有web环境,这种模式会自动退回到创建一个普通的非web
ApplicationContext。它可以与@AutoConfigureMockMvc 或
@AutoConfigureWebTestClient一起使用,用于对你的Web应用进行基于模拟的测试。
• RANDOM_PORT: 加载一个 WebServerApplicationContext
并提供一个真实的web环境。嵌入式服务器被启动并监听一个随机端口。
• DEFINED_PORT: 加载一个 WebServerApplicationContext
并提供一个真实的web环境。嵌入式服务器被启动并监听一个定义的端口(来自你的
application.properties )或默认的 8080 端口。