当前位置: 首页 > 面试题库 >

SpringBeanAutowiringSupport不会在jUnit测试中注入bean

毛淳
2023-03-14
问题内容

我使用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());
        // ...
    }
  // ...
}

有谁知道,为什么使用注入SpringBeanAutowiringSupport在jUnit测试中不起作用?


问题答案:

感谢M. Denium的帮助,他的解决方案得以奏效。

public class DossierReportItemXlsImporterImpl implements DossierRerportItemXlsImporer {

    private final Logger logger = Logger.getLogger(getClass());

    @Autowired
    private DossierReportService dossierReportService;
    @Autowired
    private DossierReportItemService dossierReportItemService;
    @Autowired
    private NandoCodeService nandoCodeService;

    public DossierReportItemXlsImporterImpl(final ApplicationContext contex){
        contex.getAutowireCapableBeanFactory().autowireBean(this);
    }

    //...
}


 public class DossierRerportItemXlsImporerTest extends AuditorServiceTest{

        @Autowired
        private ApplicationContext context;
        @Autowired
        private DossierReportService dossierReportService;
        @Autowired
        private DossierReportItemService dossierReportItemService;

        @Test
        public void testXlsImport(){
            DossierRerportItemXlsImporer importer = new DossierReportItemXlsImporterImpl(context);
            importer.processImport(createDossierReport(), loadFile());
            // ...
        }
      // ...
    }


 类似资料:
  • 我对SpringBeans的正确配置有问题。我的整个应用程序在Spring上运行正常,我想添加jUnit测试。不幸的是,豆子注射不当。我在同一个模块中有两个目录。我的整个应用程序都在里面: /src/main/java/main/ 这是正确的,我添加了restest。java和Beantest配置。java内部: /src/test/java/main/ 和配置BeanTestConfigurat

  • 我正在使用以下依赖项: 创建了新的测试类: 我在Spring Boot中创建了测试用例,但是我得到了这个错误: 这是我的应用程序类: 知道我为什么不能在测试类中注入bean吗? 我按照建议删除了@ContextConfiguration,@ComponentScan,@ConnecationTes现在我看到了不同的异常:

  • 我正在junit测试中使用Weld SE。它似乎没有注入CDIBean的内部场。我使用的是maven artifcat 没有例外,该字段只是空的。我尝试了构造函数注入,而不是字段注入: 在这种情况下,我会收到一条异常消息:org。jboss。焊接例外。不满意的解决方案例外:WELD-001334:带限定符的Z型服务的不满意依赖项

  • 并添加注释 我得到一条消息:没有测试找到test runner JUnit5,并且在Problems选项卡中有SpringBootTest.jar无法读取或者不是有效的ZIP文件 也试过 我也试过: 如果我将字符串myUrl硬编码为“http://localhost:8090”,则测试工作正常,因此问题在于@value不工作

  • 我正在使用Eclipse中的 JUnit5位于modul-path上,并且在module-info.Java中是必需的。 当我尝试运行代码时,总是会收到以下消息: 初始化引导层java.lang.module.findException时出错:无法为C:\users\tim hp.p2\pool\plugins\org.junit.jupiter.migrationsupport_5.0.0.v2

  • 所以我是JUnit的新手,我们必须用它来做家庭作业。我们的教授给了我们一个有一个测试类的项目。当我右键单击>Run as>JUnit Test,我会弹出一个错误,上面写着‘找不到JUnit tests’。我知道这里已经回答了这个问题(没有找到测试运行程序'JUnit4'的测试),但是关闭eclipse、重新启动、清理和构建似乎不起作用。下面是我的运行配置、构建路径和我试图测试的类的截图。