Переопределение контекстно-контекстных и контекстных контекстных от мета-аннотации
-
23-12-2019 - |
Вопрос
У нас есть тестовые классы, используя мета-аннотацию:
@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)