문제

메타 어노테이션을 사용하여 테스트 클래스가 있습니다.

@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 프레임 워크의 저자)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top