什么?!还有专门负责测试数据准备的插件?至于么,这个任务应该太简单了!没错,从单个测试来讲,准备测试数据的确简单,但是如果你拥有大量测试用例的时候,事情就变得不那么简单了。前面忘了说一声,这里所指的测试数据专指Grails应用的领域类数据。
如果你给Grails应用写过单元测试,那么应该会对在测试前初始化领域类数据这一步骤不会感到陌生。刚开始,你可能会觉得,Grails实在是太好了,比起以前直接用Spring+Hibernate时要爽多了,尤其是单元测试,提供了这么多便利的方法和配置,这次一定要好好的坚持写单元测试!慢慢地,新鲜劲过了,剩下的就是对每次重复工作(尤其是领域类的测试数据准备)的厌烦,但是这时还没有到你抓狂的时候,而且冲着测试为你应用提供的安全防线,你还是能够接受。毕竟,日子比起以前来讲要好过多了。后来,由于业务需要,领域类又增加了一个新的约束。当你稍稍改动几行程序写完测试用例之后,信心满满地输入“grails test-app”之后,许多原本没有改动,而且之前通过的测试,此时却都失败了。靠,怎么回事!
这时,你猛然记起,刚才给领域类增加了一个约束,而领域类在保存时是需要满足约束的。前面的测试看来很可能是与测试数据的准备相关了……原因找到了,但失败的测试还得让它们通过,没办法,挽起袖子,花上半个钟头把前面那100来个测试用例中与这个约束所属领域类相关的测试的数据准备部分都看看吧……
或许你会讲,不是还有setup吗,初始化工作就放在那里就行了。没错,这确实可以起到一部分的作用,但未必每个测试都想用同样一套测试数据,而且每当有与这种数据准备相冲突的修改(如修改约束)发生时,这种修改仍然避免不了。尤其是在测试重点并不在领域类本身的时候,这种修改更让人难以接受!
以上情况还没有谈到拥有复杂关系的领域类的数据初始化……不说别的,即使没有其他改变,但就数据准备来讲,这个工作就让人烦心。
这些都是build-test-data插件出现的原因,而且就在前不久,它的1.0版发布了。
要是你不熟悉build-test-data,可以简单地把它概括为给所有Grails领域类都增加了一个build()方法。调用该方法会自动构造并保存该领域对象的实例,而且还会遵循所有的领域约束。它还允许你覆盖你想显式设置的值。它让你的测试更清晰,而且更加牢靠,因为你只需要指定跟某个测试方法实际相关的值,而不是一个仅仅满足约束的巨型对象图。
以下代码摘自Ted Naleid的幻灯片,说明了这个插件的基本使用:
//领域类
class Author {
String name
static hasMany = [books: Book]
}
class Book {
String title
static belongsTo = [author: Author]
}
//缺省值
def book = Book.build()
assertNotNull book.author
assertNotNull book.title
//显式设置title
def book = Book.build(title:"Infinite Jest")
//设置author
def book = Book.build(author:
Author.build(name: "Charlie Stross")
)
如果你对build-test-data插件感兴趣,可以从
这个wiki了解详细信息。还有
这个优秀的幻灯片可以帮助你快速对它有个了解。
分享到:
相关推荐
标题中的"grails-fck-editor-0.3.zip_grails_grails-fck-editor"表明这是一个与Grails框架相关的插件,具体来说是FCKeditor的一个版本。FCKeditor是一款广泛使用的开源富文本编辑器,它允许用户在网页上创建和编辑...
本文将深入探讨Grails的中文文档以及“grails-fckeditor-0.9.5”插件的相关知识点。 一、Grails框架基础 1. Groovy语言:Grails的基础是Groovy,这是一种面向对象、动态类型的编程语言,语法简洁且与Java高度兼容...
`grails-doc-CN-1.0.rar` 文件包含的是 Grails 1.0 版本的中文参考文档,对于那些不熟悉英文文档或者想要深入了解 Grails 的中文用户来说,这是一个极其宝贵的资源。 文档主要涵盖以下几个关键知识点: 1. **...
总之,"grails-datastore-gorm-plugin-support-2.0.4.RELEASE.zip"提供了一个宝贵的资源,让开发者有机会学习和实践Grails的ORM功能和Android的MVC设计模式。无论是对Grails框架的探索,还是对Android开发的深化,这...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2 共两个包,解压后需要将扩展名.zip.bak改名为.zip重新解压。 http://dist.springsource.com/release/STS/3.8.1.RELEASE/dist/ e4.6/spring-tool-...
**使用 grails-perf-testapps 进行测试** 1. **克隆项目**:首先从 `grails-perf-testapps-master` 压缩包中解压获取源代码,然后使用 Git 克隆到本地。 2. **安装依赖**:确保已安装 Grails 和相应的开发环境,...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1 共两个压缩包,解压后将扩展名.zip.bak改为.zip再次解压。
4. **test**:测试目录,包含了针对插件功能的单元测试和集成测试,对于理解插件如何工作非常有帮助。 5. **grails-app**:包含了Grails应用的源代码,如控制器、服务、视图和领域模型,其中可能有与Acegi插件集成...
4. `docs`、`grails-app`、`src`、`scripts`和`lib`目录则分别包含了插件的文档、应用代码、源代码、脚本以及依赖的库文件。 Grails Acegi 0.5插件提供了以下主要功能: - **用户认证**:支持多种认证机制,如...
Grails开源框架 - 使用指南,版本1.0,中文文档。 Grails开源框架 - 使用指南 作者: Graeme Rocher, Marc Palmer 版本: 1.0 Copies of this document may be made for your own use and for distribution to ...
grails-spring-websocket ils子 2.4.x 3.2.7+ 2.5.x 4.0.0+ 安装 要将插件安装到Grails应用程序中,请将以下行添加到build.gradle依赖项部分: implementation "org.grails.plugins:grails-spring-websocket:...
以下是关于"grails-3.0.5-ga (2/2)"的详细知识点: 1. **Groovy语言**: Grails框架是用Groovy语言编写的,这是一种动态、面向对象的编程语言,与Java高度兼容,但语法更加简洁和灵活。 2. **MVC架构**: Grails遵循...
这个名为"grails-web-url-mappings-2.5.4.zip"的压缩包包含了Grails 2.5.4版本中的Web URL映射相关代码,让我们深入探讨这一关键组件。 Grails是一个基于Groovy语言的全栈式Java web框架,其设计理念是“简洁、生产...
grails-test-app 目标 使用Groovy来实现RESTful API Web应用程序。 或用于RESTful API实现)或您要使用的任何框架。 使用Robotframework( )编写一个测试用例,以在Google上搜索“ Ruckus Wireless”,并检查是否...
综上所述,`grails-docs-2.0.0`不仅提供了Grails 2.0.0框架的全面介绍,还包含了详细的使用指南和API文档,是开发者学习、查阅和解决实际问题的关键资源。通过深入研究这些文档,开发者可以熟练掌握Grails框架,从而...
2. **创建新项目**:通过`grails create-app`命令创建项目,理解`grails-app`目录结构。 3. **编写Domain Class**:学习如何定义领域类,包括关系映射和验证规则。 4. **创建Controller**:了解如何创建控制器,处理...
### Grails入门指南-中文版 #### 一、引言 Grails是一个高效的Web开发框架,它基于Groovy编程语言并构建在Spring、Hibernate和其他Java框架之上。这使得Grails成为一个一站式的解决方案,极大地提高了开发者的生产...
这个目录通常包含插件的文档,可能包括用户指南、API参考等,帮助开发者了解如何使用`Grails-Quartz` 插件,以及其提供的各种功能和API。 **5. src** 源代码目录,可能包含`Groovy` 或其他语言编写的插件代码,如...
标题 "grails-datastore-gorm-tck-1.0.9.RELEASE.zip" 提供的信息表明,这是一个与Grails框架相关的数据存储(Datastore)和GORM(Grails Object Relational Mapping)测试兼容性工具包(Test Compatibility Kit,...