首页 文章

Wildfly Spring Arquillian - WAR无条件部署和取消部署

提问于
浏览
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应用程序,但不是一个例子 .

所以这就是我想要做的 . 我为项目生成了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

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

    首先我以前找不到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

相关问题