如何 运行 maven failsafe 而不先编译

How to run maven failsafe without compiling first

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

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

我要实现的是:

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

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

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

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

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

有人可以帮助 运行 当 jars 在本地存储库中而不编译时如何实施测试吗?

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

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

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

插件目标附加到阶段。

有关详细信息,请参阅 here

当你运行:

mvn verify

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

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

mvn verify -DskipITs=true 

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

mvn failsafe:integration-test

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