Spring 在junit测试期间PersistenceUnitPostProcessor实现不工作
我已经实现了一个PersistenceUnitPostProcessor,用于扫描不同包中的实体,而不是在persistence.xml中列出它们 遗憾的是,它只在部署期间有效,而在运行junit测试时无效 处理器在上下文应用程序xml中声明如下: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">
<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