在TestExecutionListener类中为BeforeClass junit使用Autowired

时间:2014-02-10 20:15:24

标签: java spring junit listener

我需要在junit中使用@BeforeClass方法但是使用Spring注入值,因此无法将private变量切换为static。我正在尝试执行此监听器并创建一个监听器类,但我遇到了这个问题。

我在此类中还需要Autowire所需的值,因为我想要运行的方法BeforeClass调用注入@Autowired的变量。但是,由于某种原因,它不起作用,此值仍为空。有没有人遇到这样的问题?

1 个答案:

答案 0 :(得分:14)

这不是最干净的,但它有效:

public class MyTestListener extends AbstractTestExecutionListener {

    @Value("${my.value}")
    private String myValue;
    @Autowired
    private MyBean myBean;

    @Override
    public void beforeTestClass(TestContext testContext) throws Exception {
        testContext.getApplicationContext()
                .getAutowireCapableBeanFactory()
                .autowireBean(this);
    }
}