java - 并行运行 maven 测试而不等待兄弟模块依赖项

标签 java maven testing build parallel-builds

我有一个多模块 maven 项目,其中模块之间有很多依赖关系。我曾尝试并行运行我的测试,但由于模块没有经过深思熟虑并且相互高度依赖,我基本上没有时间获得,因为它们最终仍然按顺序执行。
现在,在完全运行测试之前,我有一个构建项目的阶段,以便我可以将其他静态分析工具并行应用于我的测试。
我的问题是:鉴于我的模块已经编译,我可以不告诉 maven 使用这些预编译的类并行运行测试,而不是等待依赖模块先运行它们的测试吗?
例如。目前,如果我有一个依赖于模块 B 的模块 A,模块 B 将在 A 启动之前先执行其所有测试。由于我已经构建了 A 和 B,因此我无需保留此限制。
我目前运行测试的方式类似于:mvn -f project-parent/pom.xml surefire:test其中 project parent 是我所有其他模块的父模块。为简洁起见,我省略了配置文件和其他参数。
谢谢!
编辑:此时我试图避免使用junit或surefire来避免类/套件级别的并行化,并且只想以并行方式测试模块。

最佳答案

Child测试可以通过,但 Parent测试失败。这可能是因为 Child需要 Parent但它的大部分测试都是模拟 Parent假设它有效!如果这种情况并行且不按顺序发生,我认为 Maven 不知道该怎么做。您希望 Maven 可以成为一个完整的 CI 管道,而实际上它只是一个构建工具。
然而:
如果您的测试速度慢到足以让您提出这个 SO 问题,那么它们可能是可以提取到新模块中的集成测试 (<module>-tests)。

A -> A-tests
A -> B
     B -> B-tests
     B -> C
          C -> C-tests
这意味着 A、B 和 C src/test/*快速完成,可以“正常”运行,更慢的 <module>-tests不要相互依赖,这意味着 Maven 可以用 mvn test -TC 将它们并行化。 .

关于java - 并行运行 maven 测试而不等待兄弟模块依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63137469/

相关文章:

java - 如何使用 Streams 从目录中逐行读取所有文件?

java - 使用 Hibernate 在运行时创建数据库?

java - 即使找到 Maven 依赖项,Intellij 也无法解析符号 RunWith

maven - : Can't generate reports for Maven site (Maven 3. 0.x)

ruby - 在单个 Ruby 文件上使用 guard-minitest

java.net.SocketException : Software caused connection abort: connect

java - Java 6 中的椭圆曲线密码术

testing - 使用 Maven 获取数据库密码以进行集成测试的最佳方法是什么?

java - 有没有一种方法可以在Maven构建环境中使用Gradle API?

ruby-on-rails - Rails 外部 API 测试