我正在使用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。
谢谢!
答案 0 :(得分:1)
@TestPropertySource(properties = {"ticketing.profile=test"})
不会 会影响系统属性ticketing.profile
。
您的代码不应使用system属性获取值,因为这意味着您无法覆盖它。
代码应使用spring属性访存器,如果未找到该属性,则可以使用该属性。
典型的方法是在代码中(或已完成的测试中)设置默认属性,然后通过设置系统属性来覆盖它。