我有一個Spring Boot 1.4.3項目。 在test/resources
文件夾中我有兩個屬性文件,比如說 a-test.properties
和b-test.properties
。Spring Boot加載所有可用的屬性文件,無論我的@TestPropertySource批註
測試類被註釋如下:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations = "classpath:a-test.properties")
然而,我看到在我的測試也從b-test.properties
屬性被加載(I通過一個簡單的打印輸出驗證了這一點)。
爲什麼?我怎樣才能防止這一點?
實施例從我測試提取
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations = "classpath:base-test.properties", inheritProperties=false)
public class EmailServiceContextBasedTest {
@SpyBean
public JavaMailSender javaMailSender;
@Before
public void setUp() throws Exception {
System.out.println(
((JavaMailSenderImpl)javaMailSender).getPassword()
);
System.out.println(
((JavaMailSenderImpl)javaMailSender).getJavaMailProperties()
);
}
@Test
public void test() throws Exception {
// do nothing
}
}
其中a-test.properties
是:
spring.mail.host=smtp.gmail.com
spring.mail.port=587
[email protected]
spring.mail.password=password
spring.mail.properties.mail.smtp.auth=false
spring.mail.properties.mail.smtp.starttls.enable=false
和b-test.properties
spring.mail.host=smtp.gmail.com
spring.mail.port=587
[email protected]
spring.mail.password=myPassword
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
您如何閱讀房產?你能添加一些代碼來證明你正在描述的行爲嗎? – dimitrisli
@dimitrisli是的,當然!我附上了一個示例 –
@mat_boy請提供您獲得的輸出和您期望的輸出。你的例子只會打印與其中一個屬性文件相關的密碼(在我的例子中它是'a-test.properties')。那麼你是如何驗證'也是從b-test.properties中加載的屬性'?! – Omid