2

我正在尝试构建一个简单的环境,让 Spring、Maven、JPA、Google App Engine 和 DAO 单元测试一起愉快地工作。

目标是能够运行一个简单的 DAO 单元测试来创建一个实体,然后通过一个简单的 find 再次加载它以检查它是否已正确创建——所有这些都来自我的 maven 构建。

我的 dao 正在使用 JPA 实体管理器(query()、persist() 等)

我已经让它与 hsqldb 和数据源等一起工作没有问题,但我正在努力让它与 appengine 一起工作。

我的问题是:

1)我正在使用实体管理器,如下注入我的持久性单元。可以吗?是否需要数据源或特殊的东西?我没想过,但如果我错了,请纠正我。

应用程序上下文.xml

    <bean id='entityManagerFactory' class='org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean'>
     <property name="persistenceUnitName" value="transactions-optional" />
    </bean>

持久性.xml

   <persistence-unit name="transactions-optional">
    <provider>org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider</provider>
    <properties>
        <property name="datanucleus.NontransactionalRead" value="true"/>
        <property name="datanucleus.NontransactionalWrite" value="true"/>
        <property name="datanucleus.ConnectionURL" value="appengine"/>
    </properties>
   </persistence-unit>

2) 为了能够使用 entityManager 运行单元测试,我需要将哪些依赖项添加到我的 pom 文件中?版本呢?我发现了很多关于 appengine-api-labs/stubs/testing 的东西,但没有一个能正常工作,即我在使用 JPA 时缺少 jdo 依赖项......当我尝试添加一些时,我也会遇到很多冲突罐子(数据核和东西)。

到目前为止,我正在尝试 appengine-api-1.0-sdk v1.7.0 -> ASM-all v3.3 -> datanucleus core/api-jpa/enhancer v3.1.0 -> datanucleus-appengine v2.0.1.1 和所有gae 测试罐 v1.7.0

3)我需要添加什么到我的surefire插件(测试运行器)以确保它获取所有依赖项?当 DatastorePersistenceProvider 在我的类路径中时,我在 DatastorePersistenceProvider 上遇到了一个令人筋疲力尽的 ClassNotFound(我检查了 jars 和 mvn 依赖项:tree)

我看过这个,但它似乎根本不起作用:http ://www.vertigrated.com/blog/2011/02/working-maven-3-google-app-engine-plugin-with- gwt-支持/

4) 我是否需要使用任何 localhelper 来测试我的 DAO?理想情况下,我想用实体管理器“按原样”测试我的 dao 层......你的意见是什么?有没有人设法在谷歌应用引擎上使用 JPA 运行单元测试?

5) 我需要在我的 pom 文件中的某处设置任何类型的 gae.home 吗?有人会使用它(插件或其他东西)吗?

6)如果我不使用 gwt,gwt-maven 插件是否有帮助 - 我正在编写一个使用 appengine 的简单 Web 服务,而不是 GWT 应用程序......

任何帮助将不胜感激,因为我现在已经挣扎了 2 天......

干杯,V。

4

0 回答 0