精通Grails - 使用Grails进行单元测试(单元测试提速) - 编程入门网
精通Grails - 使用Grails进行单元测试(单元测试提速)时间:2010-12-03 IBM Scott Davis在本期精通Grails中,Scott Davis 向您展示如何利用 Grails 中包含的 GrailsUnitTestCase 和 ControllerUnitTestCase 类的内置模拟功能。 Grails 支持两种基本的测试类型:单元测试和集成测试。两种测试的语法完 全相同:都被使用相同的断言编写为一个 GroovyTestCase。它们之间的区别在 于语义上。单元测试用于在隔离环境下测试类,而集成测试支持在完整的、正在 运行的环境中测试类。 该文章是根据当时最新的 Grails 1.0 版本编写的,在该版本中,测试基础 架构的功能得到了显著改进。GrailsUnitTestCase 类及其子类的引入将流程测 试的简单性和全面性提升到了一个全新的水平。具体来讲,这些新测试类的模拟 功能提升了单元测试的速度,同时能够像在集成测试中一样正常测试功能。图 1 展示了 Grails 1.1.x 中全新的测试层次结构: 图 1. Grails 1.1.x 中全新的测试层次结构 当您在下一节中创建一个新的域类和控制器时,您将了解如何实际应用 GrailsUnitTestCase 和 ControllerUnitTestCase。 开始 要执行本文中的示例,首先创建一个新应用程序。在命令提示符下键入: grails create-app testing 更改到测试目录(cd testing),然后键入: grails create-domain-class User 接下来键入: grails create-controller User 将清单 1 中的代码添加到 grails-app/domain/User.groovy 中: 清单 1. User 域类
定义 grails-app/controller/UserController.groovy 的核心行为,如清单 2 所示: 清单 2. UserController 类
现在基本的基础架构已经就绪了,接下来添加一些测试。 精通Grails - 使用Grails进行单元测试(单元测试提速)(2)时间:2010-12-03 IBM Scott Davis在 GrailsUnitTestCase 中进行模拟 在文本编辑器中打开 test/unit/UserTests.groovy。代码如清单 3 所示: 清单 3. UserTests 类
在 Grails 1.0 中,create-domain-class 命令创建的存根测试扩展了 GroovyTestCase。可以看到,现在对一个域类的单元测试(在 Grails 1.1 中) 扩展了 GrailsUnitTestCase。所以,您可以使用一些新方法来在单元测试中启 用模拟功能,这种功能在以前需要在集成测试中启用。 具体来讲,GrailsUnitTestCase 提供了以下模拟方法:
要理解这些模拟方法有何用途,首先创建一个会失败的测试。将 testSomething() 方法更改为 testBlank() 方法,如清单 4 所示: 清单 4. 一个将会失败的测试
您可能会问这个测试为什么会失败,毕竟它的语法是正确的。答案是您现在 运行的是单元测试。单元测试意味着在隔离环境中运行,所以不会运行数据库和 Web 服务 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |