我的测试类看起来像这样
@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
我不知道该如何处理。
答案 0 :(得分:1)
要使用@SpringBootTest
,您需要使用Spring Framework的测试运行器。使用@RunWith(SpringRunner.class)
注释您的测试类。
答案 1 :(得分:0)
无论面对哪个问题,请确保您的spring boot starter父版本与pom.xml中的spring cloud版本兼容
我面临着同样的问题,我通过做同样的事解决了。