Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 如何自动构建、部署和测试java web应用程序?_Ant_Jboss_Build Automation_Automated Tests - Fatal编程技术网

Ant 如何自动构建、部署和测试java web应用程序?

Ant 如何自动构建、部署和测试java web应用程序?,ant,jboss,build-automation,automated-tests,Ant,Jboss,Build Automation,Automated Tests,现在,我有一个web java项目,它通过将ear归档文件复制到服务器目录(都使用Ant)自动构建并部署到JBoss 我需要的是一种机制,不仅可以自动部署应用程序,还可以验证应用程序是否成功部署并在其上运行HttpUnit测试 问题在于如何自动监控部署过程,以等待部署完成时,并仅在部署完成后运行测试。所以我想在“一键式”中构建、部署和运行测试(我使用巡航控制) 如果您能就解决此问题提出任何建议,我将不胜感激。创建一个基本测试类,所有其他测试都从该类派生。它必须是抽象的,这样自动单元测试收集器就不

现在,我有一个web java项目,它通过将ear归档文件复制到服务器目录(都使用Ant)自动构建并部署到JBoss

我需要的是一种机制,不仅可以自动部署应用程序,还可以验证应用程序是否成功部署并在其上运行HttpUnit测试

问题在于如何自动监控部署过程,以等待部署完成时,并仅在部署完成后运行测试。所以我想在“一键式”中构建、部署和运行测试(我使用巡航控制)


如果您能就解决此问题提出任何建议,我将不胜感激。

创建一个基本测试类,所有其他测试都从该类派生。它必须是抽象的,这样自动单元测试收集器就不会试图运行它

在该类中,将以下代码添加到setUp():


<代码> CusiSeDebug 必须是静态的。

< P>您可以考虑使用HudsEngEngEngEng:帮助您在特定时间触发事件。

我知道hudson可以用来运行单元测试,通过调用ant可以实现自动部署


Karl

这里需要启动一个容器并从构建脚本部署一个应用程序,然后根据部署的应用程序运行测试。这是集成测试、端到端/功能测试、ui测试的典型需求

问题是,我们不能只是“启动并忘记”容器的启动,然后运行测试任务/目标。在运行测试之前,我们需要等待部署应用程序,这需要一些时间。为了确保我们可以在一切就绪时运行测试,构建必须启动容器并以阻塞方式部署应用程序

这正是的意义所在。Cargo是一个JavaAPI,用于启动/停止容器并部署应用程序。它提供了上面描述的逻辑,可以从Java、Ant或Maven中使用

如果您使用的是Maven,那么构建生命周期已经包括了“集成测试”阶段的内容。此阶段通常用于。。。集成测试由“集成前测试”和“集成后测试”阶段包装。这是您插入货物开始/停止目标的地方。如果您使用的是Ant,则可以使用cargo的Ant任务


另一个基于maven的选项在中描述。除了在“预集成测试”期间使用jetty插件而不是cargo来启动jetty,并在“后集成测试”期间停止jetty之外,这个想法与上面的想法完全相同

另一个选项是使用

这些任务的好处在于,它们会一直阻塞,直到JBoss完全启动,因此不需要轮询。如果JBoss未能在要求的超时时间内启动,它们也将失败;如果由于某些错误而无法启动,它们将尝试在JVM关闭时关闭JBoss。我相信这些任务用于JBoss测试套件


我也听说过关于货物的好消息。它的好处是您的构建脚本不是特定于JBoss的。据我所知,JBoss Cargo插件是由一些JBoss的家伙维护的。

因此,验证部署状态的唯一方法是“ping”我的应用程序,如果没有回答,请等待并再次ping一段时间?是的;无法使容器发送webapp已就绪的事件。实际上,你的应用程序永远不会“准备就绪”,因为容器会尽可能延迟加载。这就是为什么我从不使用mockrunner内联部署和运行所有测试的原因。你可以让一个工具为你做这件事,并在完成测试后运行你的测试。请参阅我关于Cargo的回答。Cargo 0.9在确定Tomcat是否正在运行以及应用程序是否正确部署方面存在问题。我恢复使用我自己的脚本,它可以杀死Tomcat,清除webapps目录中的任何剩余内容,等等。真的吗?这是一个已知的问题吗?这当然可能是一个bug,但我从未在Cargo和Tomcat上遇到过这个问题。无论如何,一个bug不会改变Cargo的目标。不幸的是Cargo现在不支持ant任务上的热部署,但这就是我自己添加此支持的原因。我不确定你所说的ant任务上的热部署是什么意思。根据,您可以部署Cargo的Ant任务。
if (checkIsDeployed) {
    ... run code to verify your app is ready for testing and wait until it is ...
    checkIsDeployed = true;
}