这个问题在Using Autowired in a TestExecutionListener class for BeforeClass junit之前被问到,但它没有得到回答。我面临着同样的问题,但没有找到解决方案
示例:我正在使用null mapper。
public class CustomExecutionListener extends AbstractTestExecutionListener {
@Autowired
private Mapper mapper;
@Override
public void beforeTestClass(TestContext testContext) {}
... some code...
}
测试类:注意:AppConfig包含定义的Mapper Bean。
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners(listeners = {DependencyInjectionTestExecutionListener.class, CustomExecutionListener.class})
@ContextConfiguration(classes = {AppConfig.class})
public class AccountControllerTest {
....
}
答案 0 :(得分:2)
TestExecutionListener
个实例不支持依赖注入。
仅对测试实例支持依赖注入。
因此,如果您的CustomExecutionListener
需要从ApplicationContext
访问bean,则必须手动查找 - 例如,如下所示:
public void beforeTestClass(TestContext testContext) {
Mapper mapper = testContext.getApplicationContext().getBean(Mapper.class);
// ... some code...
}
此致
Sam(Spring TestContext Framework的作者)
答案 1 :(得分:0)
您也可以尝试以下操作:Mapper mapper = Mappers.getMapper(Mapper.class);