大量的 spock 测试导致 eclipse 中的编译时间很长

Posted

技术标签:

【中文标题】大量的 spock 测试导致 eclipse 中的编译时间很长【英文标题】:Lots of spock tests lead to very long compilation time in eclipse 【发布时间】:2015-08-04 12:45:46 【问题描述】:

我们在 600 个使用 Spock 的 groovy 文件中进行了大量测试。 所有测试类都从 AbstractSpecification.groovy 扩展而来,其中注入了许多服务类和许多帮助方法来使用这些类(Spring、Autowired)。

我们使用 Eclipse,对 Abstract 类的每次更改都会导致重新编译(构建工作区,调用 Maven 项目构建器)。但是在开发过程中,这种重新编译变得越来越慢......现在有 600 次测试,我们不得不等待 aprox。距离 Eclipse 完成还有 14 分钟,这使得测试项目几乎无法使用。

我认为,对抽象类进行大量测试并没有什么不寻常的,所以我想知道使用 Spock 的人是否遇到了同样的问题。我更改了 Groovy 版本、插件版本,但没有任何帮助。只减少测试类的数量。

有什么想法吗?提前致谢!

技术数据: - Eclipse Kepler SR2,Groovy-Eclipse+Compiler 插件 2.9.1,Groovy 2.0.7,Spock 版本 0.7-groovy-2.0

【问题讨论】:

您是否进行了任何分析以查看导致速度变慢的原因(除了大量测试)?另外,这个性能问题是否只存在于您的 IDE 中,还是在您的正常构建(ant、maven、gradle 等)期间也会发生? Maven 构建在 40 秒内完美运行 (mvn clean install -DskipTests) .. 它还使用 Groovy-Eclipse 编译器来编译 Java 和 Groovy 文件。所以它与 Eclipse-Groovy-Plugin 有关,对吧? jvisualvm 在冻结期间搜索类时分配了大量资源。 如果不跳过测试,maven 构建需要多长时间? 【参考方案1】:

最后,我们已将所有 Groovy 测试翻译成 Java。经过大量测试、分析等,这是我们找到的唯一解决方案。这留下了苦涩的味道,因为Groovy有很多优点,但是给我们带来了很多麻烦。

【讨论】:

以上是关于大量的 spock 测试导致 eclipse 中的编译时间很长的主要内容,如果未能解决你的问题,请参考以下文章

使用 Maven 运行 spock 单元测试

无法在Eclipse 2019中安装Spock插件

使用属性 server.port=0 运行 spock 测试时如何找到 Spring Boot 容器的端口

使用 Spock 进行 Grails 测试 - 选择哪个模拟框架?

Groovy单元测试框架spock数据驱动Demo

为啥可以毫无问题地测试 Spock 中的私有方法/字段?