【问题标题】:Automatize test build process with maven使用 maven 自动化测试构建过程
【发布时间】:2017-11-27 15:58:59
【问题描述】:

我们有一个在 Tomcat 7 上运行的 Java Web 项目,我们使用 Maven 作为我们的构建工具。在我们实际的测试过程中,我们需要做一些手动的步骤来构建我们的测试环境项目:

  1. 使用要测试的代码检查 git 分支。
  2. 使用 maven,使用生产配置文件创建运行 mvn clean package -P production 的 war 文件。
  3. 使用网络浏览器访问我们将在其中部署战争文件的本地 PC http://192.168.0.105:8080/manager/html
  4. 上传 maven 生成的 war 文件并等待部署完成。
  5. 我们的测试人员开始测试
  6. 如果发现任何问题,我们会修复并重复该过程,直到测试成功

我们想要实现的是尽可能少的手动过程,例如运行mvn deployTest -DtestId=SC-1550 之类的命令将执行以下步骤:

  1. 运行单元测试
  2. 运行集成测试
  3. 在生产配置文件中构建 war 文件
  4. 使用参数“testId”作为war文件名,所以我们的测试人员将访问https://localhost:8443/TESTID并开始测试。这样,我们就可以准备好多个功能进行测试,只需要使用测试问题 ID 访问正确的地址即可。
  5. 使用我们测试机特定IP地址中的maven-tomcat7插件将war文件部署到Tomcat 7
  6. 环境已准备好使用新功能进行测试。
  7. 如果发现任何问题,我们在 git 上提交修复,然后再次运行 maven 命令mvn deployTest -DtestId=SC-1550

这样做,我们将大部分手动过程替换为单个命令,从而加快了我们的测试速度。

我的问题是,是否有办法通过配置 pom 文件或使用插件甚至实现我们自己的插件来通过单个命令执行此步骤来自动化此过程。


回答@avojak 并带着动机更新问题:

我们是一家小型初创公司,我们的产品处于早期到中期阶段。只是现在我们专注于测试自动化,所以我们几乎没有,甚至没有基本的单元测试。出于这个原因,我们所有的测试都是以探索性的方式进行的,跳过单元和集成测试,直到我们实现它。与此同时,我们正在使用 JIRA 工具实施 Scrum。我们确定会有一个步骤,我们的产品负责人将检查该功能是否按预期工作(QA 步骤),这就是为什么我想将 JIRA 问题与 war 文件名链接起来,他可以在其中直接访问我们的测试服务器带有要测试的问题的 ID。

【问题讨论】:

标签: java maven testing


【解决方案1】:

...如果有办法通过配置 pom 来自动化这个过程 文件,或者使用插件,甚至实现我们自己的插件来做到这一点 单个命令的步骤

您不需要为此创建或使用更多插件。听起来您已经将 pom 配置为执行单元和集成测试,这对于自动构建来说应该足够了。

如果您还没有选择持续集成工具(Jenkins、Travis CI、Gitlab CI 等),请查看一下。您可以将这些工具配置为在代码签入(或推送、PR 合并等)时自动运行作业。该作业将运行您需要的任何 Maven 命令,并将处理构建、测试、部署工件,无需任何手动交互。

我严重质疑您为什么需要指定特定的测试 ID 并手动测试 WAR。听起来您需要重新考虑您的测试策略。 您要测试哪些不能成为自动化集成测试的测试?如果您的答案是特定的工作流程或用例,听起来您需要一个更全面的集成测试套件。此外,如果一切都是自动化的,那么没有理由不总是运行一整套测试而不是指定要运行的单个测试。


根据问题编辑:

我们是一家小型初创公司,我们的产品处于早期到中期阶段。仅有的 现在我们专注于测试自动化,所以我们几乎没有, 甚至没有基本的单元测试。出于这个原因,我们所有的测试都进行了 以探索性的方式,跳过单元和集成测试,直到 我们实现它

哎呀。良好的测试应该是您最高的开发优先级之一。推迟它太容易了,然后永远无法进行适当的测试,直到为时已晚并且您的消费者/客户遇到严重的缺陷。 现在花时间编写好的测试!

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2011-02-05
    • 2013-07-07
    • 2016-04-04
    相关资源
    最近更新 更多