Pregunta

Tenemos clases de prueba utilizando una meta-anotación:

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

pero le gustaría poder anular, o anexar a los elementos de la jerarquía de la clase de prueba, por ejemplo:

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

Esto no ha funcionado para nosotros hasta ahora ... ¿Hay algún mecanismo para que esto suceda?Encontré https://jira.spring.io/browse/spr-11038 , peroNo creo que sea la corrección para este tipo de situación.

¡Gracias!

¿Fue útil?

Solución

¿Hay algún mecanismo en su lugar para que esto suceda?

No, no existe tal mecanismo que admita este estilo de configuración.

Custom compuesto anotaciones se pueden usar en lugar de las anotaciones reales, no en conjunción con las anotaciones reales. Esto es cierto en el marco de la primavera central (con la excepción de quizás @Profile y @Conditional).

En otras palabras, no puede declarar @ContextConfiguration y otra anotación que es meta-anotada con @ContextConfiguration (por ejemplo, su @BaseSpringTest) en la misma clase. Si lo hace, encontrará que la primavera solo encuentra una de esas declaraciones.

Sin embargo, si introduce una clase base, puede lograr su objetivo (aunque con el requisito de extender esa clase base):

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

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

Por supuesto, si va la ruta 'Clase base', la anotación compuesta personalizada quizás no es tan útil para usted.

Saludos,

SAM (Autor del Framework Spring TestContext)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top