首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EJB容器和JPA运行测试

使用EJB容器和JPA运行测试
EN

Stack Overflow用户
提问于 2015-11-19 06:25:53
回答 1查看 482关注 0票数 2

我很难理解如何在JUnit中为EJB和JPA正确地设置测试。我已经看到了使用Arquillian进行集成测试的建议,但我想做一个简单的单元测试。

我现在拥有的是一个带有注入Persintance上下文的EJB。我在Wildfly 9中运行应用程序,并在那里配置了数据源,因此我的持久性文件如下所示:

代码语言:javascript
复制
    <jta-data-source>java:jboss/datasources/MyDataSource</jta-data-source>
    <properties>
        <!-- Properties for Hibernate -->
        <property name="hibernate.hbm2ddl.auto" value="create" />
        <property name="hibernate.show_sql" value="false" />
    </properties>

现在,如果我将glassfish-embedded all添加到我的测试依赖项中,以运行嵌入式EJB容器并创建一个简单的测试:

代码语言:javascript
复制
    Map<String, Object> properties = new HashMap<>();
    properties.put(EJBContainer.MODULES, new File("target/classes"));

    EJBContainer container = EJBContainer.createEJBContainer();
    TestEJb bean = (TestEJb) container.getContext().lookup("java:global/classes/TestEJb");
    assertNotNull(bean);
    assertEquals(1,bean.test());

然后我收到错误,因为EJB包含容器不知道的对MyDataSource的引用。我是否应该创建另一个持久性单元,并以某种方式将其传递给EJB?

什么才是正确的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2015-11-19 07:01:34

这里的问题是您没有应用程序上下文,因此查找失败。通常,为了对容器资源进行单元测试,可以使用mock对象,比如mockejb。

如果你搜索mockejb的例子,你会发现有很多例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33791644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档