2015-05-14 4 views
1

У меня есть следующий сценарий:Отключить Spring TestExecutionListeners от унаследованного класса

@TestExecutionListeners(BasicListener.class) 
public @interface AnnotationOne { 
} 

@AnnotationOne 
public class TestClassOne extends AbstractJUnit4SpringContextTests { 
... 
} 

И поскольку:

@RunWith(SpringJUnit4ClassRunner.class) 
@TestExecutionListeners({ServletTestExecutionListener.class, DependencyInjectionTestExecutionListener.class, 
    DirtiesContextTestExecutionListener.class}) 
public abstract class AbstractJUnit4SpringContextTests implements ApplicationContextAware { 
... 
} 

По какой-то причине, TestExecutionListeners не сольются. Итак, есть ли способ отключить TestExecutionListeners, определенные родительским классом?

Моя основная забота состоит в том, чтобы работать с BasicListener.

Благодаря

ответ

0

Поведения вы испытываете из-за ошибки в основной Spring: наследственные аннотации будут тень локально объявлена ​​составленная аннотация.

В вашем случае использования, @TestExecutionListeners является унаследовали аннотацию и @AnnotationOne является локально объявлен сочинял аннотацию.

Эта ошибка была исправлена ​​в Spring Framework 4.2 RC1. Для получения дополнительной информации см. SPR-12749.

Если вы хотите обходным прежде, чем 4.2 отпущена, должно работать для вас, но вы не сможете использовать пользовательские @AnnotationOne аннотацию, если ваш класс простирается от AbstractJUnit4SpringContextTests:

@TestExecutionListeners(listeners = BasicListener.class, inheritListeners = false) 
public class TestClassOne extends AbstractJUnit4SpringContextTests { 
    // ... 
} 

Вообще говоря, AbstractJUnit4SpringContextTests добавляет очень мало значения. Таким образом, вы, вероятно, лучше с помощью следующего подхода:

@RunWith(SpringJUnit4ClassRunner.class) 
@TestExecutionListeners(BasicListener.class) 
public class TestClassOne { 
    // ... 
} 

Или даже:

@RunWith(SpringJUnit4ClassRunner.class) 
@AnnotationOne 
public class TestClassOne { 
    // ... 
} 

С уважением,

Сэм (автор Spring Framework TestContext)

Смежные вопросы