메타 어노테이션에서 contexthierarchy 및 contextConfiguration을 무시합니다
-
23-12-2019 - |
문제
메타 어노테이션을 사용하여 테스트 클래스가 있습니다.
@WebAppConfiguration
@ContextHierarchy({
@ContextConfiguration(locations = {"/web/WEB-INF/spring.xml" }, name = "parent"),
@ContextConfiguration("/web/WEB-INF/spring-servlet.xml")
})
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface BaseSpringTest {
}
.
그러나 테스트 클래스 자체에서 계층 구조의 요소를 재정의하거나 추가 할 수 있습니다. 예 :
@BaseSpringTest
@ContextConfiguration(locations = {"/web/WEB-INF/spring-extension.xml" }, name = "parent")
public class MyTest extends AbstractTestNGSpringContextTests {
...
}
.
이것은 지금까지 우리에게는 우리에게는 효과가 없었습니다 ... 이런 일을하기 위해 어떤 메커니즘이 있습니까?나는 https://jira.spring.io/browse/spr-11038 를 발견했습니다나는 이것이 이러한 유형의 상황에 대한 수정이라고 생각하지 않는다.
감사합니다!
해결책
이 일이 발생할 수있는 메커니즘이 있습니까?
아니요,이 구성 스타일을 지원하는 그러한 메커니즘은 없습니다.
사용자 정의 은 실제 주석 ()과 함께 이 아닌 실제 주석 대신 대신 대신 을 사용할 수 있습니다. 이것은 코어 스프링 프레임 워크에서 (아마도 @Profile
및 @Conditional
를 제외하고)
다른 단어에서는 @ContextConfiguration
및 동일한 클래스의 @ContextConfiguration
(예 : @BaseSpringTest
)로 메타 주석이있는 다른 주석을 선언 할 수 없습니다. 그렇게하면 봄이 해당 선언 중 하나를 찾을 수 있습니다.
그러나 기본 클래스를 소개하는 경우 목표를 달성 할 수 있습니다 (기본 클래스 확장 요구 사항이 없음) :
@BaseSpringTest
public abstract class AbstractBaseTests extends AbstractTestNGSpringContextTests {
// ...
}
@ContextConfiguration(locations = {"/web/WEB-INF/spring-extension.xml" }, name = "parent")
public class MyTest extends AbstractBaseTests {
// ...
}
.
물론 '기본 클래스'경로를가는 경우 사용자 정의 된 주석은 아마도 유용하지는 않습니다.
감사합니다.
SAM (Spring TestContext 프레임 워크의 저자)
제휴하지 않습니다 StackOverflow