精通 Grails: 使用 Grails 进行单元测试(单元测试提速)
2009-11-26 00:00:00 来源:WEB开发网核心提示: 在查看失败报告之前,您是否注意到单元测试运行速度很快,精通 Grails: 使用 Grails 进行单元测试(单元测试提速)(4),而在运行集成测试时会有明显的延迟?键入 grails test-app -unit 运行单元测试,即使测试仍然失败了,如清单 6 所示,此方法指示 Grails 将
在查看失败报告之前,您是否注意到单元测试运行速度很快,而在运行集成测试时会有明显的延迟?键入 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 将验证方法元编程到指定的域类上,就像通常在运行时所做的一样。
更多精彩
赞助商链接