Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从继承的类中禁用Spring TestExecutionListeners_Spring_Junit4_Spring Test - Fatal编程技术网

从继承的类中禁用Spring TestExecutionListeners

从继承的类中禁用Spring TestExecutionListeners,spring,junit4,spring-test,Spring,Junit4,Spring Test,我有以下情况: @TestExecutionListeners(BasicListener.class) public @interface AnnotationOne { } @AnnotationOne public class TestClassOne extends AbstractJUnit4SpringContextTests { ... } 由于: @RunWith(SpringJUnit4ClassRunner.class) @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

我主要关心的是基本的问题


谢谢

您正在经历的行为是由于core Spring中的一个bug造成的:继承的注释将对本地声明的组合注释进行阴影处理

在您的用例中,
@TestExecutionListeners
是继承的注释,
@AnnotationOne
是本地声明的组合注释

这个错误已经在SpringFramework 4.2RC1中修复。有关详细信息,请参阅

如果您希望在4.2发布之前解决问题,以下内容应该适合您,但是如果您的类从
AbstractJUnit4S普林gContextTests
扩展,则您将无法使用自定义的
@AnnotationOne
注释:

@TestExecutionListeners(listeners=BasicListener.class,inheritListeners=false)
公共类TestClassOne扩展了AbstractJUnit4SpringContextTests{
// ...
}
一般来说,
AbstractJUnit4SpringContextTests
增加的价值很小。因此,您最好采用以下方法:

@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners(BasicListener.class)
公共类TestClassOne{
// ...
}
甚至:

@RunWith(SpringJUnit4ClassRunner.class)
@注释一
公共类TestClassOne{
// ...
}
问候,

Sam(SpringTestContext框架的作者)