@TestPropertySource(properties = {“ ticketing.profile = test”})是否应该自动更新系统属性值?

时间:2019-02-26 11:57:16

标签: java spring spring-boot

我正在使用Spring Boot和com.springweb.tester软件包来创建测试。 我有一个这样的测试班:

@RunWith(SpringRunner.class)
@TestPropertySource(properties = {"ticketing.profile=test"})
@SpringBootTest(classes = TicketingConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class TicketingControllerTest extends BaseControllerTest {
....
}

据我了解,打电话

System.getProperty("ticketing.profile")

在其中一种测试方法中(尤其是在覆盖的testInit()方法内部),是否将返回“ test”符合逻辑?

对我来说,它返回null。

谢谢!

1 个答案:

答案 0 :(得分:1)

@TestPropertySource(properties = {"ticketing.profile=test"}) 

不会 会影响系统属性ticketing.profile

您的代码不应使用system属性获取值,因为这意味着您无法覆盖它。

代码应使用spring属性访存器,如果未找到该属性,则可以使用该属性。

典型的方法是在代码中(或已完成的测试中)设置默认属性,然后通过设置系统属性来覆盖它。