我试图决定如何创建一组验收测试的一个Java的EE Web应用程序。
这里的设置:Maven是用来生成一个WAR文件并将其部署到Glassfish的。 在部署时,MySQL的数据库模式自动从模型类使用Hibernate(“就是hbm2ddl =自动”选项)更新。
验收测试需要通过调用各种方法和检测结果如预期(*),以测试部署的代码。 我们写了一组额外的包挂接到现有的系统,使验收测试应该展示如何将这些集成到现有的代码库。
(*)这听起来更像单元/集成测试,但他们在这个意义上验收测试,他们应该证明我们所做的工作,他们需要这样有一个地方数据库进行部署后运行。
从上面的,我目前的想法是使用JUnit来检查预期值等。我挣扎位是如何在部署后调用这些测试。 “部署”是Maven的最后阶段,因此不知道这是可能的吗?
正因为这个阶段被称为deploy
并不意味着你必须用它来进行测试部署应用程序。 事实上,它应该只用于“部署”神器Maven仓库。 通读的描述Maven的生命周期阶段 ,你会看到有专门为您的使用情况下,一些阶段:
pre-integration-test
integration-test
post-integration-test
看看在货物Maven插件 。 它是由你的WAR文件部署到测试各种容器。 他们绝对显示的使用情况下,像您在网站上描述了一个演示。 我希望,最终,你可以使用货运部署到您的容器(从像预集成测试的早期阶段的一个)
注意,詹金斯也有一个插件,为各地的货物插件的包装。 所以,你可以做你通过詹金斯所需要的。 另外请注意,您不需要运行詹金斯建设工作作为MVN清洁部署。 可能您只是运行集成测试,只有触发另一个“部署”作业时,它成功构建工作。
如果你真的需要部署后做的东西,那么你可以为部署阶段的一部分运行故障安全,并暗示的JUnit)。
我最常做的,如果有单独的模块。 所以,你可以有一个Maven项目,其中包含你的项目和一个单独的“部署测试”项目。 然后,构建父项目将建成并运行你的战争,然后运行部署测试。 您可以使用JUnit为正常。
第二个更符合詹金斯,因为你仍然有一个单一的项目也是如此。