登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

杨柳千丝,绊惹春风

普通人日记

 
 
 

日志

 
 
关于我

性格还算开朗,为人还算不错。 长相一般,身高一般,能力一般,人是一般。 不会浪漫,不会情调,不会唱歌,不会跳舞,不会吸烟,不爱喝酒,不会开车,爱听老歌

Groovy 和Grails从入门到精通 第四章 grails 介绍(五)  

2010-06-04 21:26:02|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

创建域类

      到日前为止,该应用程序还未做任何实际工作,因此你还需要增加一些类来使应用程序成型。通常先创建一个域类然后再与控制类进行关联。Grails是使用“create-domain-class”命令来创建域类的。该命令在grails-app/domain目录中创建一个新的Grails域类,同是在test/integration目录中创建一个集成测试(integration test)。


注意:create-domain-class创建的是一个整体测试而不是单元测试,因为域类是依赖数据库的,第六章将详细讲解原因。通过把域类测试放入到test/integration目录从而形成一个集成测试,这样能使测试能进入到整个Grails环境中,包括数据库。如果没有这一点,域类不能成为有效的持久性动态域类(Without this, the domain class would not have access to the dynamic methods available to domain classes for persistence

      

     使用“create-domain-class”创建域类需要提供一个可选的类名,如下所示

> grails create-domain-class todo

      如果没有提供类名,将会在运行时提示输入一个类名。

      执行“create-domain-class”命令输出如下信息:


Running script C:\devl\java\grails-1.0\scripts\CreateDomainClass.groovy

[copy] Copying 1 file to C:\devl\workspace\collab-todo\grails-app\domain

Created for Todo

[copy] Copying 1 file to C:\devl\workspace\collab-todo\test\integration

Created Tests for Todo

    

注意到使用可选的类名运行“create-domain-class”命令,你可以使用小字字母开头,但Grails将自动将其转换成大写字母,这是遵循

标准的Groovy类名规约。列表4-1列出了创建的Todo域类:

 

4-1 Grails创建的Todo域类

                     class Todo {

}

4-1列出的Todo域类看起来只是一个最基础的Groovy类,但如果你学完接下来的两小节和后面的两章,你将会发现这个域类所提供的比看起来要多得多。

实现集成测试

      正如您在上一节看到的,Grails是通过在每次创建一个域类时生成一个相应的集成测试来忠于其测试规约。列4-2列出了为Todo域类生成的集成测试

 

4-2 Grails创建的为Todo域类生成的集成测试

class TodoTests extends GroovyTestCase {

void testSomething() {

}

}

注意列4-2的集成测试是从标准Groovy测试用例中扩展出来的,Groovy测试用例是从JUnit测试用例中扩展出现,并加上断言方法(assert methods)规约。生成的集成测试同时包含了一个测试方法模板。

注意:同JUnit测试用例,任何以test为前缀的方法将被当做一个测试方法对待,当测试工具(test harness)运行时,该方法将被执行。

      4-3 列出了Todo集成测试的两个更新测试:一个测试ToString()方法,另一个测试Todo对你的持久性。

 

4-3 Todo集成测试

1 class TodoTests extends GroovyTestCase {

2

3 void setUp() {

4 Todo.list()*.delete()

5 }

6

7 void testPersist() {

8 new Todo(name: "1", createdDate:new Date(), priority: "", status:"").save()

9 new Todo(name: "2", createdDate:new Date(), priority: "", status:"").save()

10 new Todo(name: "3", createdDate:new Date(), priority: "", status:"").save()

11 new Todo(name: "4", createdDate:new Date(), priority: "", status:"").save()

12 new Todo(name: "5", createdDate:new Date(), priority: "", status:"").save()

13

14 assert 5 == Todo.count()

15 }

16

17 void testToString() {

18 def todo = new Todo(name: "Pickup laundry")

19 assertToString(todo, "Pickup laundry")

20 }

21 }

 

4-3集成测试包含三个方法。在3-5行的setUp()方法是标准JUnit生命周期方法,它被调用在任何以test为前缀的方法前,经常用来设定测试到一个已知状态。在本例中,这个已知状态是确保数据库中无数据。







今天晚上只翻译了这么一小段,因家里有事来电话耽搁了。

有时真感叹命运坎坷,

几年下来,生活各方面刚稳定

然不如意事十之八九。

一切又得重头再来。

哎,估计近期将难以有时间继续下去

  评论这张
 
阅读(626)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018