[英]Spring Boot integration tests doesn't read properties files
我想創建集成測試,其中 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 {
}
有關更多信息:查看Junit Test 中的 Override default Spring-Boot application.properties 設置
除了上面標記的正確答案之外,還有另一種加載 application-test.properties 的自然方式:將您的測試運行“配置文件”設置為“測試”。
標記您的測試用例:
@ActiveProfiles("test")
@RunWith(SpringJUnit4ClassRunner.class)
application-xxxx.properties 是不同“配置文件”屬性的命名約定。
這個文件 application-xxxx.properties 應該放在 src/main/resources 文件夾中。
“配置文件”在 bean 配置中也很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.