我想创建一个集成测试,其中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!
这种行为的原因可能是什么,我该如何解决? 任何帮助,高度赞赏。
您应该使用@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 { }