【发布时间】:2017-02-13 13:09:32
【问题描述】:
如何在我编写的扩展 AbstractTestExecutionListener 的 TestExecutionListener 类中使用 Spring 依赖注入?
Spring DI 似乎不适用于 TestExecutionListener 类。 问题示例:
AbstractTestExecutionListener:
class SimpleClassTestListener extends AbstractTestExecutionListener {
@Autowired
protected String simplefield; // does not work simplefield = null
@Override
public void beforeTestClass(TestContext testContext) throws Exception {
System.out.println("simplefield " + simplefield);
}
}
配置文件:
@Configuration
@ComponentScan(basePackages = { "com.example*" })
class SimpleConfig {
@Bean
public String simpleField() {
return "simpleField";
}
}
JUnit 测试文件:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SimpleConfig.class })
@TestExecutionListeners(mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS, listeners = {
SimpleClassTestListener.class })
public class SimpleTest {
@Test
public void test(){
assertTrue();
}
}
正如代码注释中突出显示的那样,当我运行它时,它将打印“simplefield null”,因为 simplefield 永远不会被注入值。
【问题讨论】:
-
我还在配置中添加了@ComponentScan(basePackages = { "com.example*" })。
-
我不喜欢使用 testContext.getApplicationContext().getBean(...)。
-
我在 Spring Boot 1.5.2.RELEASE 的新项目中也看到了这个问题。
标签: java spring-test