Spring 在junit测试期间PersistenceUnitPostProcessor实现不工作

Spring 在junit测试期间PersistenceUnitPostProcessor实现不工作,spring,junit,hibernate-mapping,persistence.xml,post-processing,Spring,Junit,Hibernate Mapping,Persistence.xml,Post Processing,我已经实现了一个PersistenceUnitPostProcessor,用于扫描不同包中的实体,而不是在persistence.xml中列出它们 遗憾的是,它只在部署期间有效,而在运行junit测试时无效 处理器在上下文应用程序xml中声明如下: <bean id="entityManagerFactoryMdm" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

我已经实现了一个PersistenceUnitPostProcessor,用于扫描不同包中的实体,而不是在persistence.xml中列出它们

遗憾的是,它只在部署期间有效,而在运行junit测试时无效

处理器在上下文应用程序xml中声明如下:

<bean id="entityManagerFactoryMdm"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitPostProcessors">
        <list>
            <bean class="com.mypackage.MyPersistenceUnitPostProcessor" />
        </list>
    </property>
</bean>
超级班:

@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class,
    TransactionalTestExecutionListener.class, TestExecutionLifecycleListener.class })
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public abstract class TestBase {

}
我得到一个例外:

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private     com.company.repository.DataProviderRepository com.company.service.impl.ProviderConfigurationServiceImpl.dataProviderRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataProviderRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Not an managed type: class package1.entities.DataProviderEntity
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
... 43 more
有什么问题吗?处理器在进行单元测试时工作,而不是在进行单元测试时工作?我在监督什么吗


任何提示都是非常受欢迎的。

适用于可能遇到此类问题的人

错误的原因是以下表达式:

"classpath:%s/*.class"
将其更改为:

"classpath*:%s/*.class"
解决了错误

问题是,第一个表达式将只查找找到的第一条路径。一些需要的类不会出现,比如在本例中,导致此类错误消息的实体

第二个表达式将告诉ResourcePatternResolver查找与路径模式匹配的所有类目录

../classes/package1/Entity.class

../test-classes/package1/ServiceTest.class
就我而言,它以前只考虑:

../test-classes/package1/ServiceTest.class
希望这对别人有帮助

"classpath*:%s/*.class"
../classes/package1/Entity.class

../test-classes/package1/ServiceTest.class
../test-classes/package1/ServiceTest.class