1、概览 {#1概览}
无论是单元测试还是集成测试,测试对于任何应用程序都至关重要。SpringRunner 和 SpringBootTest 类是运行集成测试的基础。
在本教程中,我们将了解 SpringRunner 和 @SpringBootTest 的用法,以及它们之间的区别。
2、SpringRunner {#2springrunner}
SpringRunner 是 SpringJUnit4ClassRunner 类的别名,可用于基于 JUnit4 的测试类。它加载 Spring TestContext,通过 Spring TestContext,Spring Bean 和 Configuration 可与 JUnit 注解一起使用。需要 JUnit 4.12 或更高版本才能使用它。
通过 @RunWith(SpringRunner.class) 注解测试类来使用此功能:
@RunWith(SpringRunner.class)
public class SampleIntegrationTest {
@Test
public void test() {
//
}
}
3、SpringBootTest {#3springboottest}
SpringBootTest 是 SpringRunner 的替代品,可与 JUnit5 配合使用。它还用于运行集成测试和加载 Spring TestContext。
它的功能非常丰富,可通过注解参数提供多种配置。它支持各种 Web 环境模式,如 MOCK、RANDOM_PORT、DEFINED_PORT 和 NONE。我们可以通过注解传递 application properties,在测试运行之前将其注入到 Spring Environment 中。
@SpringBootTest(
properties = {"user.name=test_user"},
webEnvironment = MOCK)
public class SampleIntegrationTest {
@Test
public void test() {
//
}
}
要运行集成测试,必须在类级别添加注解 @SpringBootTest。
4、SpringRunner 与 SpringBootTest 的比较 {#4springrunner-与-springboottest-的比较}
它们的区别如下表:
| SpringRunner | SpringBootTest |
|--------------------------------|--------------------------------|
| 用于运行集成测试和加载 Spring TestContext | 用于运行集成测试和加载 Spring TestContext |
| 还可以使用 JUnit 注解 | 还可以使用 JUnit 注解 |
| 需要 JUnit4.12 或更高版本 | 需要 JUnit5 或更高版本 |
| 配置方面的 API 不丰富 | 提供丰富的 API 来配置测试配置 |
| 不推荐 | 推荐使用,因为它支持新功能,而且使用简单 |
5、总结 {#5总结}
在本文中,我们学习了 SpringRunner 和 SpringBootTest 的用法,以及它们之间的区别。
如果你使用的是 Junit 4 那么你可以选择使用 SpringRunner,否则都推荐使用 SpringBootTest。
参考:https://www.baeldung.com/springrunner-vs-springboottest
51工具盒子