使用JUnit、Maven和Hudson/Jenkins进行集成测试

使用JUnit、Maven和Hudson/Jenkins进行集成测试,junit,hudson,integration-testing,Junit,Hudson,Integration Testing,我们将使用Hudson/Jenkinsbuildserver来构建我们的服务器应用程序(只需调用maven)并对其运行集成测试。我们将准备3个Hudson/Jenkins作业:用于构建、部署和运行集成测试,它们按以下顺序相互调用。所有这些作业(构建、部署、集成测试)都将每晚运行 集成测试是用JUnit编写的,由mvn测试调用(依次由“测试”Hudson/Jenkins作业调用)。因为它们需要服务器启动并运行,所以我们必须运行“部署”作业 这有意义吗?是否有任何特殊的服务器来部署应用程序并运行测试

我们将使用
Hudson/Jenkins
buildserver来构建我们的服务器应用程序(只需调用
maven
)并对其运行集成测试。我们将准备3个Hudson/Jenkins作业:用于构建、部署和运行集成测试,它们按以下顺序相互调用。所有这些作业(构建、部署、集成测试)都将每晚运行

集成测试是用JUnit编写的,由mvn测试调用(依次由“测试”
Hudson/Jenkins
作业调用)。因为它们需要服务器启动并运行,所以我们必须运行“部署”作业


这有意义吗?是否有任何特殊的服务器来部署应用程序并运行测试,或者Hudson/Jenkins是否可以这样做?

这肯定是有意义的,基本上您指的是构建管道。有一种方法可以帮助可视化上游/下游项目(您可以在jenkins中创建一个新的管道视图)

至于服务器组件的部署,这取决于您运行的技术/堆栈。例如,您可以编写一个脚本,使用jenkins中的后期构建步骤将应用程序部署到测试环境中

另一种选择是使用maven插件部署应用程序。您可以在概要文件中分离部署步骤,并在部署步骤上仅运行部署目标等

基本上有很多选择,但是构建管道的想法很有意义。要阅读构建管道和相关主题,我建议看一看

有关詹金斯的更多信息,请查看

这有意义吗?是否有要部署的特殊服务器 应用程序和运行测试或者Hudson/Jenkins可以吗


您可以在与jenkins相同的服务器上运行应用程序,但这是否合理取决于应用程序。如果它严重依赖于特定的服务器设置,那么更好的选择可能是在vm中运行服务器,而不是在源代码管理中运行配置。有很多工具可以帮助实现自动化,在我的脑海中,您已经有了,而且取决于服务器的技术,您可以在一个Hudson项目中完成所有这些,使用Maven而不是Surefire执行集成测试

这允许您在执行集成测试之前启动和部署,并在测试完成后关闭服务器。它还允许您将集成测试与单元测试分开


对于Java EE应用程序,您可以使用或使用包含和的嵌入式Jetty执行启动/部署/停止步骤。

为什么要使用三个不同的作业?您使用的是哪种服务器?(什么样的申请?)