Question

Nous avons des classes de test utilisant une méta-annotation :

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

Mais j'aimerais pouvoir remplacer ou ajouter des éléments de la hiérarchie à partir de la classe de test elle-même, par exemple :

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

Cela n'a pas fonctionné pour nous jusqu'à présent...existe-t-il un mécanisme en place pour que cela se produise ?j'ai trouvé https://jira.spring.io/browse/SPR-11038, mais je ne pense pas que ce soit tout à fait la solution à ce type de situation.

Merci!

Était-ce utile?

La solution

existe-t-il un mécanisme en place pour que cela se produise ?

Non, aucun mécanisme de ce type ne prend en charge ce style de configuration.

Coutume annotations composées peut être utilisé au lieu de les annotations réelles, pas en conjonction avec les annotations elles-mêmes.Cela est vrai dans l'ensemble du Spring Framework principal (à l'exception peut-être de @Profile et @Conditional).

En d'autres termes, vous ne pouvez pas déclarer @ContextConfiguration et une autre annotation méta-annotée avec @ContextConfiguration (par exemple, votre @BaseSpringTest) dans la même classe.Si vous le faites, vous constaterez que Spring ne trouve qu'une seule de ces déclarations.

Cependant, si vous introduisez une classe de base, vous pouvez atteindre votre objectif (avec toutefois la nécessité d'étendre cette classe de base) :

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

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

Bien sûr, si vous optez pour la « classe de base », l’annotation composée personnalisée ne vous est peut-être pas aussi utile.

Salutations,

Sam (auteur du Spring TestContext Framework)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top