【发布时间】:2017-05-28 16:11:18
【问题描述】:
我有一个 Spring Boot 1.4.3 项目。
在test/resources 文件夹中,我有两个属性文件,比如说
a-test.properties 和 b-test.properties。
测试类注释如下:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations = "classpath:a-test.properties")
但是,我在测试中看到 b-test.properties 的属性也已加载(我通过简单的打印输出验证了这一点)。
为什么?我怎样才能防止这种情况发生?
从我的测试中提取的示例
@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
spring.mail.username=email@gmail.com
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
spring.mail.username=myemail@gmail.com
spring.mail.password=myPassword
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
【问题讨论】:
-
您是如何阅读这些属性的?您能否添加一些代码来展示您所描述的行为?
-
@dimitrisli 是的,当然!我附上了一个例子
-
@mat_boy 请提供你得到的输出和你期望的输出。您的示例只会打印与属性文件之一关联的密码(在我的例子中是
a-test.properties)。那你是怎么验证that also the properties from b-test.properties are loaded的?!
标签: spring unit-testing spring-boot properties