繁体   English   中英

编译 Java 单元测试很慢

[英]Compiling Java unit tests very slow

我正在开发一个新的多模块 Maven 项目(Java11+),因为我们在项目中添加了越来越多的单元测试,我注意到编译我们的测试变得非常慢。 所以我开始分析项目,这里是编译一个典型模块的结果:

  • “test-compile” 18 个文件耗时 109 秒
  • “编译”(非测试类)为 76 个文件花费了 4 秒。

我已经在使用 Java11(OpenJDK)的 Windows 笔记本上运行了它,但可以在 Java17 和 OracleJDK 以及 Linux 机器上重现它。 我不知道是什么导致了这种巨大的差异(每个文件 0.05 秒与每个文件 6 秒)。 我们主要使用 Spring-Boot,在我们的测试中,我们使用带有 spring-boot-starter-test、Mockito 和 AssertJ 的 Junit5。

这是使用我们的 maven 配置的最小复制器: https://github.com/elbird/slow-test-compile

经过大量的反复试验,我找到了罪魁祸首:龙目岛。 我无法解释为什么,但是在我的复制器 https://github.com/elbird/slow-test-compile中,我发现至少在版本 1.18.20(及更低版本)中,使用 Java11+ 编译时,lombok 确实很慢。 (尤其是像 assertjs assertThat()这样的重载方法)

幸运的是,在 lombok 1.18.22 中,这个问题似乎得到了修复(尽管更新日志中没有任何内容表明这一点

TLDR:更新到 lombok 1.18.22 解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM