在Spring启动测试中,WebApplicationContext始终为null

时间:2017-02-08 18:46:07

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

我的测试类看起来像这样

@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注释的类调用它们。

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

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

现在,问题是我无法在springbootTest类中使用runWith(SpringRunner.class)。如果我这样做以获得模拟webApplicationContext,那么它会给我这个错误:

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

我不知道该如何处理。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

无论面对哪个问题,请确保您的spring boot starter父版本与pom.xml中的spring cloud版本兼容

我面临着同样的问题,我通过做同样的事解决了。