从继承的类

时间:2015-05-14 10:56:13

标签: spring junit4 spring-test

我有以下情况:

@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正常工作。

由于

1 个答案:

答案 0 :(得分:0)

您遇到的行为是由于核心Spring中的错误:继承的注释会影响本地声明的组合注释。

在您的使用案例中,@TestExecutionListeners继承的注释,@AnnotationOne是本地声明的撰写的注释

此错误已在Spring Framework 4.2 RC1中修复。有关详细信息,请参阅SPR-12749

如果您希望在发布4.2之前解决问题,则以下内容应该对您有用,但如果您的班级来自{{1},您将无法使用自定义@AnnotationOne注释}}:

AbstractJUnit4SpringContextTests

一般来说,@TestExecutionListeners(listeners = BasicListener.class, inheritListeners = false) public class TestClassOne extends AbstractJUnit4SpringContextTests { // ... } 增加的价值非常小。所以你最好采用以下方法:

AbstractJUnit4SpringContextTests

甚至:

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

此致

Sam( Spring TestContext Framework的作者