SpringRunner vs. SpringBootTest
最后更新:2024 年 4 月 19 日
1. 概述
测试对于任何应用程序至关重要,无论是单元测试还是集成测试。SpringRunner 和 SpringBootTest 类构成了运行集成测试的基础。
在本教程中,我们将学习这两者。我们将学习如何在代码中使用它们,并了解它们的相似之处和不同之处。
2. SpringRunner
SpringRunner 是类 SpringJUnit4ClassRunner 的别名,并且与基于 JUnit4 的测试类一起工作。它加载 Spring TestContext,通过它,spring beans 和配置变得可用,并与 JUnit 注解一起使用。我们使用此功能需要 JUnit 4.12 或更高版本。
要在代码中使用它,请使用 @RunWith(SpringRunner.class) 注解测试类
@RunWith(SpringRunner.class)
public class SampleIntegrationTest {
@Test
public void test() {
//
}
}
3. SpringBootTest
SpringBootTest 是 SpringRunner 的替代方案,并且与 JUnit5 一起工作。它也用于运行集成测试并加载 Spring TestContext。
它功能非常丰富,并且通过其注解参数提供了许多配置。它支持各种 Web 环境模式,例如 MOCK、RANDOM_PORT、DEFINED_PORT 和 NONE。我们可以在其注解中传递应用程序属性,这些属性将在测试运行前注入到 spring 环境中
@SpringBootTest(
properties = {"user.name=test_user"},
webEnvironment = MOCK)
public class SampleIntegrationTest {
@Test
public void test() {
//
}
}
需要在类级别使用 @SpringBootTest 注解来运行集成测试。
4. SpringRunner 和 SpringBootTest 之间的比较
在此表中,我们将比较这两个类及其优缺点。
| SpringRunner | SpringBootTest |
|---|---|
| 用于运行集成测试并加载 Spring TestContext | 用于运行集成测试并加载 Spring TestContext |
| 还可以使用 JUnit 注解 | 还可以使用 JUnit 注解 |
| 需要 JUnit4.12 或更高版本 | 需要 JUnit5 或更高版本 |
| 在配置方面 API 不够丰富 | 提供丰富的 API 来配置测试配置 |
| 不推荐使用 | 推荐使用,因为它支持新功能并且易于使用 |
5. 结论
在本文中,我们了解了 SpringRunner 和 SpringBootTest。我们已经学习了如何使用它们。我们还对它们进行了比较,并了解了它们的异同。
我们应该使用 SpringBootTest,因为它支持最新的 JUnit,但是当需要使用 JUnit 4 时,SpringRunner 是一个选择。















