快速业务通道

精通Grails: 测试 Grails 应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
了这种情况 — 文档描 述软件最初的、历史性的任务是什么,而不是当前实现要做什么。

要想准备一组全面的、优秀的 测试,仅仅保持代码没有 bug 是不够的。这样的测试有一个附带的好处,即您可以得到 “可执行 的文档”:用代码表示活动的、不断变化的项目需求。如果将测试映射到需求,则可以和用户共享 某些内容。您必须保证代码的健全,保证满足了用户的需求。将这个可执行文档与 CruiseControl 等持 续集成服务器(持续反复地运行测试的服务器)相结合,就可以得到一个安全保障机制,它保证新特性不 会对原本良好的软件造成损害。

行为驱动的开发(Behavior-Driven Development,BDD)完全采 用了可执行文档的想法。easyb 是一个用 Groovy 编写的 BDD,它允许您将测试编写成用户和开发人员都 可以阅读的用户需求(参见 参考资料)。如果一些用户思想比较前卫,宁愿放弃 Microsoft® Word (例如),easyb 可以排除所有过时的需求文档。因此,项目需求从一开始就是可执行的。

将清 单 5 中的代码输入到 HotelStay.groovy 和 HotelStayTests.groovy:

清单 5. 使用 assertToString

import java.text.SimpleDateFormat class HotelStay {   String hotel  Date checkIn  Date checkOut    String toString(){   def sdf = new SimpleDateFormat("EEEE")   "${hotel} (${sdf.format(checkIn)} to ${sdf.format(checkOut)})"  } } import java.text.SimpleDateFormat class HotelStayTests extends GroovyTestCase {   void testSomething(){...}   void testToString() {    def h = new HotelStay (hotel:"Hilton")    def df = new SimpleDateFormat("MM/dd/yyyy")    h.checkIn = df.parse("10/1/2008")    h.checkOut = df.parse ("10/5/2008")    println h    assertToString h, "Hilton (Wednesday to Sunday)"   } }

输入 grails test-app 验证第二个测试是否通过。

testToString 方法使用了新的断言方法之一 —assertToString— 它由 GroovyTestCase 引入。使用 JUnit assertEquals 方法肯定会获得相同的结果,但是 assertToString 的表达能力更强。测试方法的 名称和最终的断言清楚地表明了这个测试的目的(参见 参考资料 获得一个链接,它列出了 GroovyTestCase 支持的所有断言,包括 assertArrayEquals、assertContains 和 assertLength)。

精通Grails: 测试 Grails 应用程序(5)

时间:2011-07-29 IBM Scott Davis

添加控制器和视图

到目前为止,您一直以编程的方式与 HotelStay 域类交互。添加一个 HotelStayController,如清单 6 所示,它使您能够在 Web 浏览器上使用该类:

清单 6. HotelStayController 源代码

class HotelStayController {   def scaffold = HotelStay }

您应该对 create 表单进行仔细的 UI 调试。默认情况下,日期字段包括 day、month、year、hours 和 minutes,如图 4 所示:

图 4. 默认显示日期和时间

精通Grails: 测试 Grails 应用程序 - 编程入门网

在这里,忽略日期字段的时间戳部分是安全的。输入 grails generate-views HotelStay。要创建图 5 所示的经过修改的 UI,请将 precision="day" 添加到 views/hotelStay/create.gsp 和 views/hotelStay/edit.gsp 中的 <g:datePicker> 元素:

图 5. 仅显示日期

精通Grails: 测试 Grails 应用程序 - 编程入门网

有了运行在 servlet 容器中的活动的、有效的 HotelStay 之后,就要开始讨论测试了:单元测试还 是集成测试?

精通Grails: 测试 Grails 应用程序(6)

时间:2011-07-29 IBM Scott Davis

对比单元测试和集成测试

如我前面所述,Grails 支持两种

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号