Frage

Wir haben Testklassen, die eine Meta-Annotation verwenden:

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

Ich möchte jedoch in der Lage sein, Elemente der Hierarchie aus der Testklasse selbst zu überschreiben oder an sie anzuhängen, z. B.:

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

Das hat bei uns bisher nicht funktioniert...Gibt es einen Mechanismus, um dies zu ermöglichen?ich fand https://jira.spring.io/browse/SPR-11038, aber ich glaube nicht, dass das die richtige Lösung für eine solche Situation ist.

Danke!

War es hilfreich?

Lösung

Gibt es einen Mechanismus, um dies zu ermöglichen?

Nein, es gibt keinen solchen Mechanismus, der diesen Konfigurationsstil unterstützt.

Brauch verfasste Anmerkungen kann verwendet werden anstatt die eigentlichen Anmerkungen, nicht in Verbindung mit die eigentlichen Anmerkungen.Dies gilt für das gesamte Kern-Spring-Framework (mit Ausnahme von vielleicht @Profile Und @Conditional).

Mit anderen Worten: Sie können keine Erklärung abgeben @ContextConfiguration und eine weitere Anmerkung, die mit Meta-Annotationen versehen ist @ContextConfiguration (z. B. Ihr @BaseSpringTest) in derselben Klasse.Wenn Sie dies tun, werden Sie feststellen, dass Spring nur eine dieser Deklarationen findet.

Wenn Sie jedoch eine Basisklasse einführen, können Sie Ihr Ziel erreichen (allerdings mit der Anforderung, diese Basisklasse zu erweitern):

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

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

Wenn Sie sich natürlich für die „Basisklasse“-Route entscheiden, ist die benutzerdefinierte Annotation möglicherweise nicht so nützlich für Sie.

Grüße,

Sam (Autor des Spring TestContext Framework)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top