java - 使用 Maven 自动化测试构建过程

标签 java maven testing

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

  1. 检查带有要测试的代码的 git 分支。
  2. 使用 maven,使用生产配置文件创建运行 mvn clean package -P production 的 war 文件。
  3. 使用网络浏览器访问将部署 war 文件的本地 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. 使用maven-tomcat7插件将war文件部署到我们测试机具体IP地址的Tomcat 7
  6. 环境已准备好使用新功能进行测试。
  7. 如果发现任何问题,我们会在 git 上提交修复,然后再次运行 maven 命令 mvn deployTest -DtestId=SC-1550

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

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


有动机地回答@avojak 和更新问题:

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

最佳答案

...is if there is a way to automatize this process by configuring the pom file, or using a plugin or even implementing our own plugin to do this steps with a single command

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

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

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


根据问题编辑进行编辑:

We are a small startup with our product in early to mid stages. Only now we are focusing on test automation, so we have almost none of it, not even basic unit tests. For this reason, all of our tests are made in a exploratory way, skipping the unit and integration tests, until we implement it

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

关于java - 使用 Maven 自动化测试构建过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47515030/

相关文章:

java - 如何替换通过属性加载的字符串中的空格

java - 类(class)倒数计时器不会重置

php - 在任何其他测试之前运行的 Symfony 测试?

java - if else 语句错误

java - Spring MVC Rest 中的单元测试 - 转换问题

java - 如何在 SVN 中自动 checkin 由 maven build 生成的文件?

java - 如何使用 VSCODE 将 YML 文件添加到我的项目中?

Maven PDF 不包含站点信息

testing - Botium脚本内存文件使用方法

visual-studio-2010 - 我可以使用单元测试工具进行集成测试吗?