【发布时间】:2017-07-12 19:50:16
【问题描述】:
我想创建集成测试,其中 Spring Boot 将使用 @Value 注释从 .properties 文件中读取值。
但是每次我运行测试时,我的断言都会失败,因为 Spring 无法读取该值:
org.junit.ComparisonFailure:
Expected :works!
Actual :${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!
这种行为的原因是什么?我该如何解决?
任何帮助都非常感谢。
【问题讨论】:
-
ClassToTest看起来像什么?你有@SpringBootTest吗?它会猜测您的测试没有作为 Spring Boot 测试运行,因此没有加载应用程序属性。如果发生这种情况,将活动配置文件设置为test应该足以让application-test.properties加载
标签: java spring spring-boot junit4 properties-file