无法从 JUnit 中的 Spring Boot 读取应用程序属性?
Posted
技术标签:
【中文标题】无法从 JUnit 中的 Spring Boot 读取应用程序属性?【英文标题】:Not able to read application properties from Spring Boot in JUnit? 【发布时间】:2017-06-26 13:16:32 【问题描述】:我有一个JUnit
测试,我想针对REST
服务运行该服务,该服务已经在我的机器上的指定端口上运行。已经用Postman
测试了REST
服务,它工作正常。
这里的计划是通过将REST
URL 外部化到属性文件中来使它们可配置。因此我尝试了以下操作,JUnit
类无法读取属性文件值。
StoreClientTest.java
@RunWith(SpringJUnit4ClassRunner.class)
@PropertySource("classpath:application.properties")
public class StoreClientTest
private static final String STORE_URI = "http://localhost:8084/hpdas/store";
private RestTemplate restTemplate;
@Value("$name")
private String name;
@Before
public void setUp()
restTemplate = new RestTemplate();
@Test
public void testStore_NotNull()
//PRINTS $name instead of abc ?????
System.out.println("name = " + name);
assertNotNull(restTemplate.getForObject(STORE_URI, Map.class));
@After
public void tearDown()
restTemplate = null;
src\test\main\resources\application.properties
name=abc
【问题讨论】:
你有没有尝试改变src\test\resources\application.properties中的包? 不确定您所说的“更改包”是什么意思。你能详细说明一下吗? 【参考方案1】:首先,您需要为测试创建一个应用程序上下文配置
@SpringBootApplication
@PropertySource(value = "classpath:application.properties")
public class TestContextConfiguration
其次,让你的测试类使用这个配置
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = TestContextConfiguration.class)
public class StoreClientTest
@Value("$name")
private String name;
// test cases ..
【讨论】:
以上是关于无法从 JUnit 中的 Spring Boot 读取应用程序属性?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 Spring Boot 应用程序的 Junit 测试中应用程序属性中的属性不可用?
JUnit get() 方法在 Spring Boot 中不起作用
Spring Boot 2.2 出现错误“带有 ID 'junit-vintage' 的 TestEngine 无法发现测试”