【发布时间】: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 简单地@AutowireMockMvc类(您不需要手动创建它)。 -
我仍然需要一个 webApplicationContext 来注册 bean。所以我的主要问题是获得一个 webApplicationContext。
标签: spring spring-boot spring-test spring-boot-test