Переопределение контекстно-контекстных и контекстных контекстных от мета-аннотации

StackOverflow https://stackoverflow.com//questions/25065849

Вопрос

У нас есть тестовые классы, используя мета-аннотацию:

@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 , ноЯ не думаю, что это довольно исправление для этого типа ситуации.

Спасибо!

Это было полезно?

Решение

Есть ли какой-нибудь механизм, чтобы это произошло?

Нет, такого механизма, который поддерживает этот стиль конфигурации.

Custom Составленные аннотации могут быть использованы вместо фактических аннотаций, не в сочетании с фактическими аннотациями. Это верно через основной весенние рамки (за исключением, возможно, генеракодицетагкодом и генеракодицетагкодом).

Другими словами, вы не можете объявить @Profile и еще одну аннотацию, которая является метааннотированной с @Conditional (например, вашим генеракодицетагкодом) в том же классе. Если вы сделаете, вы обнаружите, что весна находит только одну из этих деклараций.

Однако, если вы представите базовый класс, вы можете добиться своей цели (хотя и с требованием расширить этот базовый класс):

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

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

Конечно, если вы собираетесь на маршрут «базовый класс», пользовательская компонентная аннотация, возможно, не так полезно для вас.

С уважением,

Сэм (автор весной TestContext Framework)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top