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

时间:2012-02-25 14:20:30

标签: junit hudson integration-testing

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

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

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

2 个答案:

答案 0 :(得分:6)

这绝对有道理,基本上你指的是构建管道。有一个Jenkins-plugin来帮助可视化上游/下游项目(在jenkins中创建一个新的管道视图)。

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

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

基本上有很多选项,但构建管道的想法很有意义。要阅读构建管道和相关主题,我建议您查看Continuous Deployment

有关Jenkins的更多信息,请查看this video

  

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

您可以在与jenkins相同的服务器上运行该应用程序,但是有意义取决于应用程序。如果它在很大程度上取决于特定的服务器设置,那么更好的选择可能是在vm中运行服务器,而在源代码管理中运行配置。有很多工具可以帮助实现这一目标,我有PuppetChefVagrant

答案 1 :(得分:2)

根据服务器的技术,您可以在单个Hudson项目中完成所有这些操作,使用Maven的Failsafe plugin而不是Surefire执行集成测试。

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

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