精通Grails: 测试 Grails 应用程序 - 编程入门网
基本类型的测试:单元测试和集成测试。这两者之间没有语法区别 — 它们都是用相同的断言写的 GroovyTestCase。它们的区别在于语义。单元测试孤立地测试类,而集成 测试在一个完整的运行环境中测试类。
坦白地说,如果您想将所有的 Grails 测试都编写成集成测试,则刚好符合我的想法。所有 Grails create-* 命令都生成相应的集成测试,所以很多人都使用现成的集成测试。正如稍后看到的一样,很多 测试需要在完整的运行环境中进行,因此默认使用集成测试是很好的选择。 如果您想测试一些非核心 Grails 类,则适合使用单元测试。要创建一个单元测试,请输入 grails create-unit-test MyTestUnit。因为测试脚本不是在不同的包中创建的,所以单元测试和集成测试的名 称应该是惟一的。如果不是这样的话,将会收到清单 7 所示的错误消息: 清单 7. 单元测试和集成测试同名时收到的错误消息
因为集成测试默认使用后缀 Tests,所以我在所有单元测试上都使用后缀 UnitTests,避免混淆。 为简单的验证错误消息编写测试 下一个用户场景说明 hotel 字段不能留空。这很容易通过内置的 Grails 验证框架来实现。将一个 static constraints 块添加到 HotelStay,如清单 8 所示: 清单 8. 将一个 static constraints 块添加到 HotelStay
输入 grails run-app。如果您尝试在留空 hotel 字段的情况下创建一个 HotelStay,将收到如图 6 所示的错误消息: 图 6. 空字段的默认错误消息 精通Grails: 测试 Grails 应用程序(7)时间:2011-07-29 IBM Scott Davis我敢保证您的用户会喜欢这个特性,但对默认的错误消息还不是很满意。假设他们稍微改动了一下用 户场景:hotel 字段不能留空;如果留空,错误消息会提示 “Please provide a hotel name”。 现在您已经添加了一些定制代码 — 尽管它就像一个定制的 String 那么简单 — 接下来应该添加测 试了(当然,编写一个验证用户场景的完整性的测试 — 尽管不涉及到定制代码 — 也是完全可以接受的 。 打开 grails-app/i18n/messages.properties 并添加 hotelStay.hotel.blank=Please provide a hotel name。尝试在浏览器中提交一个空 hotel。这时您将看到自己的定制消息,如图 7 所示: 图 7. 显示定制的验证错误消息 向 HotelStayTests.groovy 添加一个新测试,检验对空字段的验证是否有效,如清单 9 所示: 清单 9. 测试验证错误
在生成的控制器中,您已经看到添加到域类中的 save() 方法。在这里,我本来也可以调用 save(), 但事实上我并不想把新的类保存到数据库。我只关注验证是否发生。由 validate() 方法来完成这个任务 。如果验证失败,则返回 false。如验证成功,则返回 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |