【问题标题】:Spring Boot - Assert Application Load FailureSpring Boot - 断言应用程序加载失败
【发布时间】:2020-09-02 14:46:41
【问题描述】:

我正在测试我的代码中的一行,该行在加载 Spring Boot 应用程序上下文时应该会导致失败。但是,在这种情况下使用@SpringBootTest 将无济于事,因为应用程序初始化会出现(预期的)失败,并且永远无法到达测试方法。

@SpringBootTest
class SomeTestClass {

  @Autowired
  ApplicationContext applicationContext

  @Test
  void someTestCase() {
    //some assert about application context   
  }
}

有什么方法可以配置@SpringBootTest 以使其在类级别的故障中幸免于难?或者,有没有办法手动运行受影响组件的迷你 Spring Boot 应用程序?

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    如果我正确理解您的问题,您应该使用 SpringRunner。

    SpringRunner 支持加载 Spring ApplicationContext 并将 bean @Autowired 放入您的测试实例。它实际上做的远不止这些(在 Spring 参考手册中有介绍),但这是基本思想。

    所以你可以这样添加:

    @RunWith(SpringRunner.class)
    @SpringBootTest
    class SomeTestClass {
    
      @Autowired
      ApplicationContext applicationContext
    
      @Test
      void someTestCase() {
        //some assert about application context   
      }
    }
    

    【讨论】:

    • 首先,这无济于事,因为有问题的场景有一个预期的失败,所以在进入测试方法之前它会失败。此外,@SpringBootTest 已经在 Spring Boot 的现代版本中包含了 @RunWith(SpringRunner.class)@ExtendWith(SpringExtension.class)
    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 2019-02-15
    • 2017-05-12
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多