gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:18:15 25 4
gpt4 key购买 nike

我有一个多模块 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com