2015-05-11 22 views
7

我正在做我的第一个Java EE项目,我想进行测试。我搜索并发现,自从EJB 3.1以来,就有可能使用嵌入式EJB容器来测试业务层。我正在使用WildFly,但我还没有找到如何配置嵌入式容器。WildFly:如何使用嵌入式容器测试EJB?

那么,如何正确配置嵌入式容器并使用WildFly测试EJB 3.1+?

我感谢任何帮助!

+1

您是否在寻找[Arquillian](http://www.arquillian.org),Wildfly的集成测试框架?或者你是否正在寻找关于[在单元测试中嵌入EJB容器]的Stackoverflow问题中讨论过的内容(http://stackoverflow.com/questions/24310912/arquillian-vs-ejb-embeddable-container)? – fxnn

+0

您好@fxnn,这将是第二个选项,我已经找到了许多相同的代码的帖子,但它似乎有一个differente设置取决于你使用的AS,在我的情况下它是蜻蜓。 – codenoob

+0

您可以使用[wildfly-maven-plugin](https://docs.jboss.org/wildfly/plugins/maven/latest/)在测试过程中启动服务器,并在测试完成时将其关闭。 –

回答

5

您必须使用jboss本身的框架arquillian http://www.mastertheboss.com/jboss-frameworks/arquillian/arquillian-tutorial

这个框架做的是这样的:在后台创建jboss的实例。所有东西都部署在那里,以便您可以在该“后台”容器上运行ejb或servlet。

配置它并不容易,所以我建议你从eclipse的Jboss Tools开始。代码看起来那么像这样:

@Deployment 
public static Archive<?> createTestArchive() { 
    return ShrinkWrap.create(WebArchive.class, "test-demo.war") 
      .addAsResource("META-INF/persistence.xml") 
      .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"); 
} 

我不赞成这种做法,这真是一个单独的部署,你需要充分了解WAR和EJB封装和所有其他细节的结构。

这真的会更好,你的EJB,JPA和Servlet bean只是真正的逻辑所在的普通Java类(POJO's)的轻量级包装。然后你可以使用普通单元测试来测试它们。

相关问题