Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring集成测试注入PersistenceContext_Java_Spring_Hibernate_Spring Mvc_Dependency Injection - Fatal编程技术网

Java Spring集成测试注入PersistenceContext

Java Spring集成测试注入PersistenceContext,java,spring,hibernate,spring-mvc,dependency-injection,Java,Spring,Hibernate,Spring Mvc,Dependency Injection,我正在SpringMVC应用程序中集成Hibernate搜索 因此,我们有一个“BuildSearchIndex”类,在应用程序开始时调用该类来创建搜索索引: @Component public class BuildSearchIndex implements ApplicationListener { @PersistenceContext(unitName = "entityManagerFactory") private EntityManager _entityMan

我正在SpringMVC应用程序中集成Hibernate搜索

因此,我们有一个“BuildSearchIndex”类,在应用程序开始时调用该类来创建搜索索引:

@Component
public class BuildSearchIndex implements ApplicationListener {

    @PersistenceContext(unitName = "entityManagerFactory")
    private EntityManager _entityManager;

    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        try {
            FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(_entityManager);
            fullTextEntityManager.createIndexer().startAndWait();
        } catch (InterruptedException e) {
            System.out.println("An error occurred trying to build the search index: " + e.toString());
        }
        return;
    }
}
在正常的应用程序运行中,一切正常

但是当我尝试开始集成测试时,我总是得到一个非法的argumentException,即EntityManager为null

IntegrationTest的类定义如下所示:

@ActiveProfiles("test")
@WebAppConfiguration
@TransactionConfiguration(defaultRollback = false)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class DummyServiceIntTest extends AbstractTransactionalJUnit4SpringContextTests {

}

如何在此集成测试中正确地注入实体管理器?

根据信息,最有可能怀疑的是“测试”概要文件。它与默认配置文件有何不同?它只是有另一个数据库身份验证,并禁用了LDAP连接,但我不认为这是原因,因为自从我添加了BuildSearchIndex类以来,所有集成测试都失败了,不仅是来自这个TestClass的测试,而且所有的测试……如果无法加载上下文,它们都会失败,所以这并不奇怪。您是否配置了自己的
EntityManagerFactory
?当使用一个不需要的注释时,还可以尝试从注释中删除
unitName
,它应该指向单元的名称,现在它似乎指向bean的名称。