我在某些对象中使用SpringBeanAutowiringSupport进行bean注入。问题是,在jUnit测试中无法注入bean。为了进行测试,使用了SpringJUnit4ClassRunner。
public class DossierReportItemXlsImporterImpl implements DossierRerportItemXlsImporer {
private final Logger logger = Logger.getLogger(getClass());
// are not autowired.
@Autowired
private DossierReportService dossierReportService;
@Autowired
private DossierReportItemService dossierReportItemService;
@Autowired
private NandoCodeService nandoCodeService;
public DossierReportItemXlsImporterImpl(){
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
//...
}
public class DossierRerportItemXlsImporerTest extends AuditorServiceTest{
// injected OK
@Autowired
private DossierReportService dossierReportService;
@Autowired
private DossierReportItemService dossierReportItemService;
@Test
public void testXlsImport(){
DossierRerportItemXlsImporer importer = new DossierReportItemXlsImporterImpl();
importer.processImport(createDossierReport(), loadFile());
// ...
}
// ...
}
有谁知道,为什么在jUnit测试中使用
SpringBeanAutowiringSupport
的注入不起作用? 最佳答案
spring + junit团队已经解决了这个问题。看这个链接->
spring unit testing
否则,您可以调用spring上下文并使用getBean方法,但是通过这种方式,您甚至可以通过类内部的简单主测试(而不是junit test)来执行此操作
**请注意,如果您使用spring + junit配置,则必须将test-spring-context.xml放入测试包中