【问题标题】:Could not resolve placeholder 'version.v1' in value "/api/${version.v1}"无法解析值“/api/${version.v1}”中的占位符“version.v1”
【发布时间】:2019-11-27 17:18:49
【问题描述】:

我正在尝试使用 Mockito 编写 Springboot 端点单元测试。系统在测试执行上下文期间未能初始化占位符。你能帮我理解我哪里出错了吗?

@SpringJUnitWebConfig
@ContextConfiguration(classes=MockLocationsController.class)
@TestPropertySource(properties = {
        "version.v1=v1",    
    })
public class MockLocationsControllerTest {

}

原因:java.lang.IllegalArgumentException:无法解析 值“/api/${version.v1}”中的占位符“version.v1”

【问题讨论】:

标签: java spring-boot spring-mvc mockito


【解决方案1】:

通过提供自定义 @ContextConfiguration,您创建了一个有限的 Spring Test 上下文,它很可能没有 PropertyPlaceholderConfigurer bean。没有该 bean 属性占位符将无法解析。

通常使用 @WebMvcTest 声明带有模拟的 Web 层的 Spring Boot 测试,这使您可以使用 PropertyPlaceholderConfigurer 进行最小的工作设置。

@SpringJUnitWebConfig
@WebMvcTest(MockLocationsController.class)
@TestPropertySource(properties = {
        "version.v1=v1",    
    })
public class MockLocationsControllerTest {

}

【讨论】:

  • 谢谢卡罗尔,它对我没有帮助
猜你喜欢
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多