Unit testing 在Grails中通过BuildConfig.groovy使用依赖项解析时,如何有效地进行单元测试?

Unit testing 在Grails中通过BuildConfig.groovy使用依赖项解析时,如何有效地进行单元测试?,unit-testing,grails,groovy,dependencies,Unit Testing,Grails,Groovy,Dependencies,我想遵循TDD,但由于要解决依赖关系,grails test app CUT命令需要运行将近一分钟。。。以及解决新插件。请稍等 这两个阶段中的每一个都需要大约20秒才能完成,而测试只需要几秒钟 我不确定这是否会对性能产生任何影响,但我正在通过BuildConfig.groovy使用依赖项解析,并且希望继续使用它 我怎么能让grails只执行测试,或者跳过解析过程? 我还能如何加快这个过程?请注意,grails interactive无法影响解析速度。 想法: 尝试删除或安全地移动目录/.ivy2

我想遵循TDD,但由于要解决依赖关系,grails test app CUT命令需要运行将近一分钟。。。以及解决新插件。请稍等

这两个阶段中的每一个都需要大约20秒才能完成,而测试只需要几秒钟

我不确定这是否会对性能产生任何影响,但我正在通过BuildConfig.groovy使用依赖项解析,并且希望继续使用它

我怎么能让grails只执行测试,或者跳过解析过程? 我还能如何加快这个过程?请注意,grails interactive无法影响解析速度。 想法:

尝试删除或安全地移动目录/.ivy2/cache。下次您执行“运行应用程序”时,所有依赖项都将从头开始重新下载。完成此操作后,我的“解决依赖项…”时间缩短了约5秒。 还有一些关于如何完全清理目录的提示,如果您有一些不一致的文件等,完全清理可能会有所帮助。 通过在grails.project.dependency.resolution部分将log设置为info,尝试在BuildConfig.groovy中打开日志记录。这可以让您更好地了解哪些依赖项占用的时间最长。 确保.ivy2目录位于本地计算机上。看见 想法:

尝试删除或安全地移动目录/.ivy2/cache。下次您执行“运行应用程序”时,所有依赖项都将从头开始重新下载。完成此操作后,我的“解决依赖项…”时间缩短了约5秒。 还有一些关于如何完全清理目录的提示,如果您有一些不一致的文件等,完全清理可能会有所帮助。 通过在grails.project.dependency.resolution部分将log设置为info,尝试在BuildConfig.groovy中打开日志记录。这可以让您更好地了解哪些依赖项占用的时间最长。 确保.ivy2目录位于本地计算机上。看见
我有一个类似的问题,并通过不使用任何插件的*SNAPHOT版本解决了它。我降级到最新的非快照版本,并将解析依赖项的时间从10秒缩短到1秒。

我遇到了类似的问题,并通过不使用任何插件的*-SNAPHOT版本解决了它。我已降级到最新的非快照版本,并将解析依赖项的时间从10秒缩短到1秒。

您应该以可以直接从IDE运行单元测试的方式编写单元测试。我喜欢看绿色的酒吧。例如,在STS/Eclipse中,只需执行runas->Junit测试。如果测试需要运行Grails,那么它就不再是单元测试,而是集成测试

编写单元测试的方式应该可以直接从IDE运行它们。我喜欢看绿色的酒吧。例如,在STS/Eclipse中,只需执行runas->Junit测试。如果测试需要运行Grails,那么它就不再是单元测试,而是集成测试

我必须在这方面支持FlareCoder。太多的Grails开发人员在使用特定于Grails的单元测试时变得懒惰,或者更糟糕的是,将一切都变成集成测试。如果您的项目相对较小,并且您的团队并不介意每次启动Grails,但它确实与真正的TDD背道而驰,那么这很好

一旦您了解了Grails之外Groovy的全部功能,就应该尝试编写单元测试而不依赖Grails。单元测试的真正精神是不需要框架。Groovy本身有许多方法来存根/模拟不需要长启动时间的类。然后您的单元测试可以单独运行,也可以作为一个整体快速运行。我在IntelliJ IDEA中以这种方式在一个非常快速的方法级别上进行TDD


Grails中的mock并不总是需要Grails mock。有时要做到这一点比其他时候要困难,但请记住,Grails只是许多酷技术的抽象,使用一些允许快速开发的Groovy元编程。如果它们没有像您期望的那样运行,请深入研究并理解它们,这样您就可以删除Grails正在执行的任何您不需要的操作。

我将不得不为此备份FlareCoder。太多的Grails开发人员在使用特定于Grails的单元测试时变得懒惰,或者更糟糕的是,将一切都变成集成测试。如果您的项目相对较小,并且您的团队并不介意每次启动Grails,但它确实与真正的TDD背道而驰,那么这很好

一旦您了解了Grails之外Groovy的全部功能,就应该尝试编写单元测试而不依赖Grails。单元测试的真正精神是不需要框架。Groovy本身有许多方法来存根/模拟不需要长启动时间的类。然后您的单元测试可以单独运行,也可以作为一个整体快速运行。我在IntelliJ IDEA中以这种方式在一个非常快速的方法级别上进行TDD

Grails中的mocking并不要求Grails对所有ti进行mocking
我有时要做到这一点比其他时候要困难,但请记住,Grails只是许多酷技术的抽象,使用一些允许快速开发的Groovy元编程。如果它们没有像您期望的那样运行,请深入研究并理解它们,这样您就可以删除Grails正在执行的任何您不需要的操作。

在Grails 2中,有一个新的变体,它是旧的、现在已弃用的“interactive”命令。为了启动它,必须在没有任何参数的情况下启动grails,即grails


从那里运行测试应用程序似乎跳过了依赖关系解析,这最终使测试运行速度大大加快,在前面提到的情况下缩短了40秒。

在Grails 2中,有一个新的变体,它是旧的现已弃用的“interactive”命令。为了启动它,必须在没有任何参数的情况下启动grails,即grails


从那里运行测试应用程序似乎跳过了依赖性解析,这最终会使测试运行得更快—在前面提到的情况下缩短40秒。

您可以设置一个环境来运行JUnit测试,而无需Grails—前提是您将类路径设置为已编译的项目类。IntelliJ IDEA为我做了类似的工作——在第一次编译之后,单元测试运行得更快。当然,这不适用于集成测试,您可以设置一个环境来运行JUnit测试,而不使用Grails,前提是您将类路径设置为已编译的项目类。IntelliJ IDEA为我做了类似的工作——在第一次编译之后,单元测试运行得更快。当然,这不适用于集成测试。几乎所有的单元测试都需要特定于Grails的类,即使它只是为了能够使用更简单的模拟技术。几乎所有的单元测试都需要特定于Grails的类,即使它只是为了能够使用更简单的模拟技术。