【问题标题】:Spring boot test controllers when no app class present没有应用程序类时的 Spring Boot 测试控制器
【发布时间】:2019-07-16 13:34:11
【问题描述】:

所以我有一个多 maven 模块项目,其中包含一个用于控制器的模块和一个包含 spring boot 启动应用程序类的模块。

我的应用 - 部署(模块) - 控制器(模块)

在控制器模块中,我希望能够使用 mockMvc 测试它们

但是当我运行它时,我得到以下错误:

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

我想要做的是仍然能够测试这个,我可以创建一个测试应用程序并使用它吗?

@RunWith(SpringRunner.class)
@WebMvcTest(Controller.class)
@ActiveProfiles(Constants.TEST)
public class ControllerTest {

  @Autowired
  private MockMvc mockMvc;

  @Test
  public void contextLoads() {
    assertNotNull(mockMvc);
  }

}

【问题讨论】:

  • 你可以创建一个专门的SpringBootApplication,就像普通类在你的模块测试包下有main函数一样

标签: spring-boot spring-test-mvc


【解决方案1】:

您可以像这样在测试包中创建一个“测试配置”类:

@SpringBootApplication
public class TestConfig {

}

我正在使用它作为我需要测试的自定义存储库或服务的方法

比你可以注释你的类

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc

比你还可以

@Autowired
protected MockMvc mockMvc;

以及您需要的所有其他东西。

希望对你有帮助

【讨论】:

  • 这有点用,但我仍然希望能够使用 WebMvcTest.. 除了 SpringBootTest 我可以使用其他任何东西...仅加载控制器。
  • 不,我的意思是我想使用 WebMvcTest 而不是 SpringBootTest 来启动应用程序。
  • 不,那我认为你不能,是组件扫描的问题,请参阅stackoverflow.com/questions/43515279/…
  • 是的,我可以将 TestConfig 放在与测试类相同的包中。然后它被捡起来了。 :)
猜你喜欢
  • 2018-03-25
  • 2021-06-27
  • 2018-01-02
  • 2018-05-15
  • 2020-03-22
  • 2021-08-02
  • 2018-04-27
  • 2021-02-08
  • 2017-10-03
相关资源
最近更新 更多