有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何尽可能快地运行maven项目的测试?

假设您有一个多项目结构。结构的子集如下图所示

Module dependency

现在,您对运行projectA的测试感兴趣。但你正在发展。本着TDD的精神,您需要反馈回路尽可能快。或者,您可能正在构建服务器上从头开始运行测试

我看到的备选方案有:

  1. maven test慢,因为maven为每个项目运行阶段compiletest
  2. maven test -pl A令我惊讶的是,这似乎不起作用,因为maven不会构建项目A(项目CHD)的依赖关系。因此,测试编译将/可能失败
  3. maven test -pl A --also-make。这有点奏效。然而,maven仍然为projectA依赖的每个项目运行测试。如果让我们假设projectC的测试需要1小时,那么您需要等待多长时间才能最终运行您真正关心的测试

我真正想要的是maven尽可能快地运行a的测试。我相信这意味着:

  1. 编译项目依赖项的所有源代码(CGD
  2. 编译projectA的源代码
  3. 编译projectA的测试代码
  4. 运行项目A的测试代码

有没有办法用一个命令来实现这一点
我的理解有什么错误吗
这不是大多数人的共同目标吗?他们如何着手解决这个问题

(p.s.I来自gradle和sbt。在那里,与maven test -pl A相当的功能正如我在这里描述的那样)


共 (1) 个答案

  1. # 1 楼答案

    1. 如果模块A的开发需要对依赖模块进行更改(CHD),那么您没有正确组织模块。这似乎违反了OOD原则公共关闭原则CCP):

    Classes that change together are packed together.

    对于(maven工件)也是如此

    1. 如果您刚刚开始开发,并且在开发过程中模块发生了变化(这是很自然的),那么就不清楚依赖模块的1小时测试从何而来。最有可能的是,在这个阶段,项目测试将花费最少的时间。如果不是这样,请参见第1点

    因此,以下选项是可能的:

    • 在开发的早期阶段,测试整个项目及其模块
    • 当它变得笨重(测试执行时间长)或模块已经稳定(遵循CCP)时,只对所需的模块运行测试