我在某些对象中使​​用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放入测试包中

09-05 18:32