Wildfly Spring Arquillian - WAR正在部署和取消部署,毫无例外

时间:2014-09-03 14:56:53

标签: wildfly jboss-arquillian

我正在开发一个项目,我正在尝试使用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应用程序,但不是一个示例。

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

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

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

有人可以在这里帮助我吗,目前在测试用例中你还没有看到很多测试逻辑,暂时我只是想注入实体管理器和DAO层

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

1 个答案:

答案 0 :(得分:0)

所以这里是我遇到的详细答案和问题,如果有帮助的话

首先我以前找不到Arquillian Servlet Runner, 我意识到问题出在web.xml

从Servlet 3.0开始,web.xml具有metadata-complete =“true”的功能,现在这个功能改善了服务器启动时间(在我的例子中是Wildfly),但它在Arquillian中的作用是ArquillianServletRunner,它是servlet未检测到的。

我和我用于开发的战争完全一样,因此也就是问题。

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

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

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

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

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

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