2016-06-23 3 views
0

@TestPropertySource이 SpEL을 수락하거나 최소한 다른 속성의 값을 대체 할 수있는 속성을 허용할지 궁금합니다.@TestPropertySource는 SPEL 또는 다른 속성의 값을 존중합니까?

그것은 내가 locations 속성의 파일 중 하나에 존재하는 말하는 겁니다 속성을 가정 @TestPropertySource with dynamic properties

비슷한 질문 ...

예를 들어 내가 좋아하는 뭔가를하려는 경우 :

@TestPropertySource(
    locations = {"classpath:application.properties", "classpath:database.properties"}, 
    properties = {"newPortNum = #{1 + Integer.parseInt(${myapp.web.server.port.ssl})}}) 

또는이 :

@TestPropertySource(
    locations = {"classpath:application.properties", "classpath:database.properties"}, 
    properties = {"outputFile = ${outputDir}/foo.txt"}) 

이렇게하려면 TestExecutionListener 또는 @BootstrapWith을 구현해야합니까?

답변

1

스트레이트 @TestPropertySource.locations()위한 JavaDoc에서 다음 경로에

속성 자리 (즉, ${...})는 Environment 대해 해결 될 것이다.

... 의미 : 이미 Environment에 추가 된 것에 대한 것입니다.

SpEL 표현식은 지원되지 않습니다.

당신이 EnvironmentPropertySource를 추가하기위한 프로그램 지원이 필요한 경우, 당신은 @ContextConfiguration(initializers = ...)을 통해 등록 할 수있는 ApplicationContextInitializer을 구현해야합니다.

감사합니다,

(스프링 TestContext 프레임 워크의 저자)

+0

둘 다 제안 작동하는지 확인했습니다. 감사 –