2014-09-03 61 views
0

我正在开发一个项目,其中我尝试使用Arquillian进行集成测试。我们的项目使用Spring 4,Hibernate,我们正在尝试将它与Arquillian集成。 我无法找到合适的示例项目来解释在此链接中使用Arquillium Spring Extension https://github.com/arquillian/arquillian-showcase/tree/master/spring 大多数示例都涉及通过创建JAR来测试业务逻辑。 在这个链接https://github.com/arquillian/arquillian-extension-spring我发现如何使用Arquillian Spring Extension来测试web应用程序,但没有一个例子。Wildfly Spring Arquillian - WAR正在部署和取消部署,没有任何例外

所以这就是我想要做的。 我为该项目生成了网络归档,它在Wildfly上成功部署,没有任何问题或错误,我们可以访问我们的网页。

我们为项目添加了arquillian配置,最初我们只是打算注入实体管理器并执行DAO访问层的测试。但是我们认为我们有完全可部署的WAR,所以让我们为整个测试安装arquillian,而不仅仅是DAO层。因此我们决定配置相同。

现在我不是再次创建整个WAR,而是使用现有配置文件中没有更改的配置文件。 (我知道persistence-ds应该被改变并相应地使用,但是可以在以后使用maven完成)。因此,目前我所有的配置文件(applicationContext,beans.xml,hibernate.xml,web.xml,mappings.xml等)都与DEV env中使用的相同。

是否有人可以帮助我在这里,而且目前正处于测试案例U将不会看到太多的测试逻辑,对于暂时​​我只是试图注入实体管理器和DAO层

下一个选项,我可以尝试的, 不直接使用战争,而是使用ShrinkWrap创建一个通过添加包和依赖关系等等......我不知道这是否真的有必要。 其他选项,我可以从视图中分离出逻辑代码并创建一个JAR,然后使用@SpringConfiguration,并查看它是否有效。 或者删除Spring Extension并使用普通的CDI,看看它是否可行,但是当它来到Spring MVC测试时,我可能不得不解决这个问题。

+0

2. pom.xml的 https://gist.github.com/shrikanthavale/8cd19f2a6c3be8cc44be 3.测试案例 https://gist.github.com/shrikanthavale/b72e8c8348354db4d0c3 – 2014-09-03 14:57:26

+0

1 。错误,(Maven -X),WebArchive结构的sysout - https://gist.github.com/shrikanthavale/ad4cc4015c53c98b64a2配置文件 - Web.xml,ApplicationContext.xml,hibernate,xml,beans.xml,faces-config ,mvc-dispatcherservlet,mappings.xml https://gist.github.com/shrikanthavale/273890d1cf844f28adc9 – 2014-09-03 14:58:38

+0

我能够解决Ar的问题quillianServletRunner,通过从2.5修改web.xml为3.0,不是部署和服务器日志干净,但仍然没有注入 – 2014-09-03 15:00:18

回答

0

因此,这里是我面临详细的解答和问题,如果它可以帮助别人

首先,我用得到的Arquillian servlet运行没有发现, 我意识到这个问题是在web.xml

从3.0的Servlet ,web.xml具有metadata-complete =“true”的特性,现在这个特性提高了服务器的启动时间(在我的例子中是Wildfly),但是它在Arquillian中的作用是ArquillianServletRunner,这是servlet未被发现的。

而且我和WAR一样用于开发,因此也是这个问题。

我所要做的只是创建一个带有metadata-complete = false的重复web.xml,并将其放入src/test/resources中,并更新我的开发战争并将其用于arquillian。

现在第二个问题,这是我的一个错误,当我们使用Spring容器时,我们从服务器的standalone.xml中移除了Weld子系统。

但是当我添加焊接容器时,bean开始注入@Inject注解。

但我希望我的测试环境与开发环境完全相同,所以我添加了适当的arquillian弹簧依赖关系,并再次移除了焊接容器,并且它仍在工作。

所以这里是我的更新pom.xml和arquillian.xml。

https://gist.github.com/shrikanthavale/ec96736e32df8b6985bb https://gist.github.com/shrikanthavale/8cd19f2a6c3be8cc44be