51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

SpringRunner 和 @SpringBootTest

1、概览 {#1概览}

无论是单元测试还是集成测试,测试对于任何应用程序都至关重要。SpringRunnerSpringBootTest 类是运行集成测试的基础。

在本教程中,我们将了解 SpringRunner@SpringBootTest 的用法,以及它们之间的区别。

2、SpringRunner {#2springrunner}

SpringRunnerSpringJUnit4ClassRunner 类的别名,可用于基于 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}

SpringBootTestSpringRunner 的替代品,可与 JUnit5 配合使用。它还用于运行集成测试和加载 Spring TestContext

它的功能非常丰富,可通过注解参数提供多种配置。它支持各种 Web 环境模式,如 MOCKRANDOM_PORTDEFINED_PORTNONE。我们可以通过注解传递 application properties,在测试运行之前将其注入到 Spring Environment 中。

@SpringBootTest(
  properties = {"user.name=test_user"},
  webEnvironment = MOCK)
public class SampleIntegrationTest {

    @Test
    public void test() {
        //
    }
}

要运行集成测试,必须在类级别添加注解 @SpringBootTest

4、SpringRunnerSpringBootTest 的比较 {#4springrunner-与-springboottest-的比较}

它们的区别如下表:

| SpringRunner | SpringBootTest | |--------------------------------|--------------------------------| | 用于运行集成测试和加载 Spring TestContext | 用于运行集成测试和加载 Spring TestContext | | 还可以使用 JUnit 注解 | 还可以使用 JUnit 注解 | | 需要 JUnit4.12 或更高版本 | 需要 JUnit5 或更高版本 | | 配置方面的 API 不丰富 | 提供丰富的 API 来配置测试配置 | | 不推荐 | 推荐使用,因为它支持新功能,而且使用简单 |

5、总结 {#5总结}

在本文中,我们学习了 SpringRunnerSpringBootTest 的用法,以及它们之间的区别。

如果你使用的是 Junit 4 那么你可以选择使用 SpringRunner,否则都推荐使用 SpringBootTest


参考:https://www.baeldung.com/springrunner-vs-springboottest

赞(0)
未经允许不得转载:工具盒子 » SpringRunner 和 @SpringBootTest