精通Grails - 使用Grails进行单元测试(单元测试提速) - 编程入门网
器,最重要的是不会发生与 Grails 相关的元编程。
回头看一下 清单 1 中 User 域类的源代码,很明显其中没有定义任何 validate() 方法。此方法(以及 save()、list()、hasErrors() 和您熟悉的所 有其他 Groovy Object Relational Mapping (GORM) 方法)都会被 Grails 在 运行时动态添加到域类中。 要运行这个将会失败的测试,在命令提示符处键入 grails test-app。您应 该看到清单 5 所示的结果: 清单 5. 控制台输出中显示的失败测试
精通Grails - 使用Grails进行单元测试(单元测试提速)(3)时间:2010-12-03 IBM Scott Davis在查看失败报告之前,您是否注意到单元测试运行速度很快,而在运行集成 测试时会有明显的延迟?键入 grails test-app -unit 运行单元测试。即使测 试仍然失败了,您也应该会看到测试运行速度上的显著改进。 当然,您可以键入 grails test-app -integration 来仅运行集成测试。事 实上,您甚至可以将具有单元和集成标志与测试类的名称组合在一起。键入 grails test-app -unit User 定位到您感兴趣的特定测试类。(注意,您在名 称后面省略了 Tests 后缀,能键入更少的内容始终是一件好事)。在现实世界 中,将测试限制到单个类的能力能够使您对编写测试充满信心。 知道您拥有一个失败的测试之后,您可能希望查看错误消息。在 Web 浏览器 中打开 test/reports/html/index.html。单击失败的测试类。将会看到如图 2 所示的结果: 图 2. 报告显示了失败的单元测试 No signature of method: User.validate() 错误消息证实,Grails 确实没 有将 validate() 方法元编程到 User 类上。 现在,您拥有两个选择。第一个选择是将此测试类转移到集成目录中。但是 Grails 转向运行集成测试需要很长时间,所以此选择不太理想。第二个选择是 模拟验证行为并将测试类保留在单元目录中。 理解 mockForConstraintsTests() 要在单元测试中模拟 Grails 验证,添加 mockForConstraintsTests() 方法 ,如清单 6 所示。此方法指示 Grails 将验证方法元编程到指定的域类上,就 像通常在运行时所做的一样。 清单 6. 将会通过的测试,这得益于 mockForConstraintsTests()
现在,运行测试来验证它是否会通过,如清单 7 所示: 清单 7. 运行将会通过的测试
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |