【问题标题】:How to run maven failsafe without compiling first如何在不先编译的情况下运行 maven failsafe
【发布时间】:2018-08-19 15:05:46
【问题描述】:

我有一个包含单元测试和集成测试的多模块项目。 我们将 Jenkins 用于我们的管道:

  1. 构建 + 单元测试
  2. 部署到暂存
  3. 针对暂存的集成测试。

我想要实现的是:

  • 第一步 - 构建 + 单元测试 + 打包 + 安装
  • 第二步 - 部署已打包的工件
  • 第三步 - 运行集成测试(无需重新构建)

第三步从干净的结帐开始,因此甚至没有target 文件夹。

编辑 - 集成测试在配置文件中运行,因此它们不会在第一次构建期间运行

我想要实现的是在不编译代码的情况下运行集成测试(第三步)。

如果我使用mvn failsafe:integration-tests,它会说没有任何测试(显然是因为它没有找到任何工件)。

当我添加 dependenciesToScan 时,它说它找不到 junit 提供程序 (groups/excludedGroups require TestNG, JUnit48+ or JUnit 5 on project test classpath)。

当 jars 在本地 repo 中时,有人可以帮助如何实现运行测试,而无需编译?

【问题讨论】:

  • 如果您运行mvn install,则集成测试阶段已经完成...我不明白您要解决什么样的问题?
  • 分两步运行——第一步没有集成测试,第二步只有集成测试。
  • 抱歉,这是我在您的帖子中看到的内容……问题是您为什么需要它?或者你想用这个解决什么样的问题?为什么不运行 Maven 已经通过其生命周期定义的单元测试和集成测试?
  • 编辑并添加了用例。很抱歉之前没有解释。
  • 你能解释一下deploy to staging是什么意思吗?这是您将工件部署到应用程序服务器或类似服务器的环境吗?这是一个什么样的项目?春天,春天启动?还是经典的 JEE?

标签: maven maven-failsafe-plugin


【解决方案1】:

在 Maven 中,生命周期有一个阶段的概念。

插件目标附加到阶段。

更多信息请参见here

当你运行时:

mvn verify

它实际上运行所有阶段,直到(包括)验证和调用附加到这些阶段的所有插件。

因此,如果您想在 mvn verify 期间跳过运行集成测试,您可以这样做:

mvn verify -DskipITs=true 

现在如果您只想运行集成测试,您可以只调用故障安全插件而不调用完整的“循环”(编译、单元测试等):

mvn failsafe:integration-test

当然这假设编译已经完成,并且二进制编译文件已经驻留在target目录中

【讨论】:

    【解决方案2】:

    我做了好几次类似的事情。我的标准解决方案是将系统测试套件放在一个单独的模块中,与同一存储库中的实际工件相邻。

    第一步和第二步只发生在服务模块中,而第三步发生在运行mvn verify的系统测试模块中。

    【讨论】:

    • 这确实可行!我们确实有 SystemTests,现在我想出了如何使用它来实现我想要的!非常感谢!
    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 2021-11-15
    • 2022-01-21
    • 1970-01-01
    • 2012-02-25
    • 2011-05-02
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多