【问题标题】:WebApplicationContext is always null in a spring boot testWebApplicationContext 在春季启动测试中始终为空
【发布时间】:2017-06-26 13:09:54
【问题描述】:

我的测试类是这样的

@SpringBootTest(webEnvironment=WebEnvironment.MOCK)
public class sampleClassTest{

  @Autowired
  private WebApplicationContext wac;
}

@Before
public void setup() {
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();

}

在 setup 方法中,wac 始终为 null。从 Spring Boot 文档中,@SpringBootTest(webEnvironment=WebEnvironment.MOCK) 总是创建一个模拟 WebapplicaitonContext

所以我希望它在上面的代码中自动装配,这不会发生。

有人能告诉我如何在这种情况下创建一个webapplicationContext,这样它就不会像我的情况那样为空吗?

更新

我正在运行 Spring Boot 测试,从带有 springboot 注释的类中调用它们。

测试(springboottest)和调用类(springboot)应用程序都在src/main/java下的同一个spring boot项目中。

src/main/test 下没有任何内容。我这样做是因为如果来自src/main/java 的类想要调用一个测试类,那么它就不是一个真正的测试类。

现在,问题是我不能在 springbootTest 类中使用runWith(SpringRunner.class)。如果我这样做是为了得到一个模拟 webApplicationContext 那么,它会给我这个错误:

 javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin,name=SpringApplication

我不知道该怎么做。

【问题讨论】:

  • @WebAppContext 添加到测试用例中。但是,您也可以使用 Spring Boot 简单地 @Autowire MockMvc 类(您不需要手动创建它)。
  • 我仍然需要一个 webApplicationContext 来注册 bean。所以我的主要问题是获得一个 webApplicationContext。

标签: spring spring-boot spring-test spring-boot-test


【解决方案1】:

要使用@SpringBootTest,您需要使用 Spring Framework 的测试运行器。使用 @RunWith(SpringRunner.class) 注释您的测试类。

【讨论】:

  • 实际上,我正在为我的应用程序编写一些验收测试。所以我有一个用 SpringBootapplication 注释装饰的类,它在内部调用一个用 springboottest 注释装饰的类,这是我已经粘贴在上面的代码。在这种情况下,如果我使用 Runwith(SpringRunner.class),我会收到错误 javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin,name=SpringApplication
  • 这显然行不通。 @SpringBootTest 用于单元测试,不适用于任意类,@Before 与 jUnit 一起使用但不适用于任意类。为什么你不能创建一个测试作为测试并使用它而不是你现在尝试构建的......
  • 我正在尝试使用 JUnitCore 类从 springboot 主类运行一些验收测试。看起来我在这种情况下使用 springbootTest 类的方法不起作用。
【解决方案2】:

遇到这个问题的人,请确保您的 spring boot starter 父版本与 pom.xml 中的 spring cloud 版本兼容

我遇到了同样的问题,我通过同样的方式解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 2016-09-13
    • 2021-06-10
    • 2014-06-26
    • 2021-08-31
    • 2017-09-25
    相关资源
    最近更新 更多