Pergunta

Temos classes de teste usando uma meta-anotação:

@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 {
}

Mas gostaria de poder substituir ou anexar elementos da hierarquia da própria classe de teste, por exemplo:

@BaseSpringTest
@ContextConfiguration(locations = {"/web/WEB-INF/spring-extension.xml" }, name = "parent")
public class MyTest extends AbstractTestNGSpringContextTests {
    ...
}

Isso não funcionou para nós até agora...existe algum mecanismo para fazer isso acontecer?eu encontrei https://jira.spring.io/browse/SPR-11038, mas não acho que seja a solução para esse tipo de situação.

Obrigado!

Foi útil?

Solução

existe algum mecanismo para fazer isso acontecer?

Não, não existe tal mecanismo que suporte esse estilo de configuração.

Personalizado anotações compostas pode ser usado em vez de as anotações reais, não em conjunto com as anotações reais.Isso é verdade em todo o Spring Framework principal (com exceção talvez de @Profile e @Conditional).

Em outras palavras, você não pode declarar @ContextConfiguration e outra anotação que é meta-anotada com @ContextConfiguration (por exemplo, seu @BaseSpringTest) na mesma turma.Se fizer isso, você descobrirá que o Spring encontra apenas uma dessas declarações.

No entanto, se você introduzir uma classe base, poderá atingir seu objetivo (embora com a necessidade de estender essa classe base):

@BaseSpringTest
public abstract class AbstractBaseTests extends AbstractTestNGSpringContextTests {
    // ...
}

@ContextConfiguration(locations = {"/web/WEB-INF/spring-extension.xml" }, name = "parent")
public class MyTest extends AbstractBaseTests {
    // ...
}

É claro que, se você estiver seguindo o caminho da 'classe base', a anotação composta personalizada talvez não seja tão útil para você.

Cumprimentos,

Sam (autor do Spring TestContext Framework)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top