如何加快Java单元测试的速度?

2022-09-01 02:24:13

目前,我们的项目有超过3000个单元测试,“ant testAll”需要20多分钟。除了获得更好的硬件之外,还有没有办法加快速度?


答案 1

就像你加快任何其他代码的速度一样。找出哪些测试花费的时间最多,并了解如何优化它们。

有很多操作可能会很慢,如果你做3000次,它就会加起来。有时,在测试之间重用数据是值得的(即使您不应该在单元测试中这样做,如果这是使测试以可接受的速度运行所需的条件,则可能有必要这样做)。

为测试计时。通常,其中90%几乎会立即执行,最后10%几乎需要所有时间。找到这10%,看看他们在做什么。

通过探查器运行代码,并记下所花费的时间。猜测是浪费时间。您认为测试运行器正在做的事情毫无意义。与其猜测,不如找出它在做什么。然后你就会知道如何加快速度。


答案 2

一些想法:

  • 使用模拟框架来避免命中数据库(或进行Web服务调用等)。
  • 如果您正在为许多单独的测试进行相同或类似的设置,请尝试在测试夹具设置中进行(即每个夹具完成一次而不是每个测试一次)。
  • 我相信一些测试框架允许你并行运行测试

推荐