在多模块maven项目中构建阶段之前运行单元测试

时间:2011-09-23 13:31:22

标签: java unit-testing maven multi-module

我有一个多模块maven项目。在每个模块中都有单元测试。当我在每个模块之前运行干净安装测试时,如果一个模块中的所有测试都成功,那么它就会成功构建。如果一个测试失败,那个模块中的所有其他测试都会成功运行(或者某些运行成功,其他测试失败)第一次故障单元测试放置的模块构建失败。其他模块被跳过。 我想要这样的事情:首先在所有模块中运行所有单元测试,然后如果没有失败的测试构建所有模块,或者如果在一个或模式模块中有一个或多个失败的测试,则跳过所有模块的构建。你能帮帮我吗?

3 个答案:

答案 0 :(得分:1)

AFAIK在maven中是不可能的。您正在尝试更改maven中不允许的maven构建生命周期。但是,您可以将一些配置参数传递给maven,这将影响测试。

mvn install -Dmaven.test.skip

这不会运行单元测试

mvn install -Dmaven.test.failure.ignore=true 

即使在测试阶段出现故障,这也会导致maven无法停止并继续进行模块构建过程。 希望,这有助于

答案 1 :(得分:1)

运行:

mvn clean test
mvn install -Dmaven.test.skip=true

请注意,如果您有模块间依赖关系(我假设您这样做),您可能无法真正做到这一点,因为您将需要来构建相关的jar,然后才能运行在另一个模块中进行测试。

答案 2 :(得分:0)

问题是:

模块可能彼此依赖,要解决这些依赖关系,您必须按顺序构建模块,否则它们将无法编译。所以对你的问题没有明智的解决方案。

疯狂的解决方案会以某种方式聚合来自所有子项目的源(和外部依赖项),并在该集团上运行compiletest,但这将是一个如此可怕的黑客,我很高兴他们不这样做。