unit-testing - 在Grails中创建单元测试时是否应该依赖Config.groovy

标签 unit-testing grails spock

根据Grails文档

Unit tests are typically run without the presence of physical resources that involve I/O such databases, socket connections or files.



但是,当我使用Grails cmd线工具运行测试时,它包含Config.groovy,这意味着在我经过测试的代码中,我拥有...
Integer daysToRetain = grailsApplication.config.com.gleason.assignmentRetentionDays as Integer

这可以正确解析,而无需模拟它。同样在我的单元测试中,我有以下内容...
import grails.util.Holders
...
Integer daysToRetain = Holders.config.com.gleason.assignmentRetentionDays as Integer

如果不按惯例使用grails,为什么会加载Config.groovy?另外,还可以依赖其他哪些文件?

最佳答案

Grails中的单元测试将引导一个最低可行的Grails运行时环境。这意味着进行配置,但不一定加载与持久性有关的组件或插件(即,休眠数据源)。

鉴于配置是嵌入在项目中的,Grails文档并不表示无法在单元测试期间掌握配置。而是说,在单元测试期间不一定拥有运行时服务器本地文件系统资源(特别是如果您在CI中运行)。

Also, what other files are OK to rely on?

大概项目中的任何资源。

关于unit-testing - 在Grails中创建单元测试时是否应该依赖Config.groovy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25020511/

相关文章:

java - 测试多线程代码或确保代码是线程安全的指南

c++ - 测试 C++ 迭代器

grails - Grails:应用程序运行时的CLI交互

java - 安卓 KXmlParser "NoSuchMethodError: java.lang.System.arraycopy([CI[CII)V"

automated-tests - Spock 的 @IgnoreIf Closure 没有看到在 jUnit 的套件中设置的 System prop 变量

java - JMockit - 意外调用

grails - Grails:扩展和嵌入域类有什么区别?

javascript - 如何在Grails中将remoteFunction值传递给Java脚本

java - 在方法中设置私有(private)变量和读取值

ruby - 伪造随机请求以获得相同的结果