1

我的测试课看起来像这样

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

  @Autowired
  private WebApplicationContext wac;
}

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

}

在 setup 方法中,wac 始终为空。从 spring boot 文档中,@SpringBootTest(webEnvironment=WebEnvironment.MOCK)总是创建一个 mock WebapplicaitonContext

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

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

更新

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

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

我下面什么都没有src/main/test。我这样做是因为如果来自的类src/main/java想要调用测试类,那么它并不是真正的测试类。

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

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

我不知道该怎么做。

4

2 回答 2

1

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

于 2017-02-08T19:26:55.697 回答
0

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

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

于 2020-08-21T11:06:25.900 回答