我正在使用JUnit 4通過Spring(註釋)和JPA(休眠)來測試Dao Access。數據源通過帶有ORacle(後端)的JNDI(Weblogic)進行配置。此持久性僅使用名稱和RESOURCE_LOCAL事務類型配置沒有定義[javax.persistence.EntityManager]類型的唯一bean
應用程序上下文文件包含用於註釋,JPA配置,事務以及用於註釋檢測的默認包和配置的註釋。 我使用Junit4像這樣:
的ApplicationContext
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="workRequest"/>
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="${database.target}"/>
<property name="showSql" value="${database.showSql}" />
<property name="generateDdl" value="${database.generateDdl}" />
</bean>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>workRequest</value>
</property>
<property name="jndiEnvironment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://localhost:7001</prop>
</props>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
的JUnit的TestCase
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class AssignmentDaoTest {
private AssignmentDao assignmentDao;
@Test
public void readAll() {
assertNotNull("assignmentDao cannot be null", assignmentDao);
List<Assignment> assignments = assignmentDao.findAll();
assertNotNull("There are no assignments yet", assignments);
}
}
不管什麼樣的變化我讓我得到:
No unique bean of type [javax.persistence.EntityManager] is defined
任何暗示什麼,這可能是。我在eclipse中運行測試。
assignmentDao是通過註釋連線的,那個在最後一分鐘被插入以進行調試,無視。到目前爲止,我發現的所有示例都使用配置中的EntityManagerFactory和注入的EntityManager。我用Mysql w/o JUnit-Spring Integration以這種方式使用它,它工作。 – user294241 2010-06-02 21:04:37
@sebajb:閱讀我發佈的鏈接。第13.5.2節談到以你需要的方式組合東西。 – skaffman 2010-06-02 21:19:55
謝謝。我需要閱讀文檔,看看有什麼適合我的需求。然而LocalEntityManagerFactoryBean似乎對我的需求太有限了。我只需要注入一個EntityManagerFactory。 – user294241 2010-06-02 21:51:43