我想创建集成测试,其中 Spring Boot 将使用从 .properties 文件读取值@Value注解。
但每次我运行测试时,我的断言都会失败,因为 Spring 无法读取该值:
org.junit.ComparisonFailure:
Expected :works!
Actual :${test}
My test:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class})
public class WebTests {
@Configuration
@ActiveProfiles("test")
static class ConfigurationClass {}
@Component
static class ClassToTest{
@Value("${test}")
private String test;
}
@Autowired
private ClassToTest config;
@Test
public void testTransferService() {
Assert.assertEquals(config.test, "works!");
}
}
src/main/resource 包下的 application-test.properties 包含:
test=works!
这种行为的原因是什么?我该如何解决它?
非常感谢任何帮助。
您应该使用 @PropertySource 或 @TestPropertySource 加载 application-test.properties
@RunWith(SpringJUnit4ClassRunner.class)
@TestPropertySource(locations="classpath:application-test.properties")
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class})
public class WebTests {
}
欲了解更多信息:看看这个覆盖 Junit Test 中的默认 Spring-Boot application.properties 设置 https://stackoverflow.com/questions/29669393/override-default-spring-boot-application-properties-settings-in-junit-test
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)