`
foxgem
  • 浏览: 17203 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Grails中的Controller单元测试

阅读更多

对于Controller的单元测试,Grails也提供了很方便的支持,使得书写非常简单,有代码为证:

单元测试代码
  1. class CategoryControllerTests extends GroovyTestCase {   
  2.        
  3.     void setUp(){   
  4.         def test1= new Category(name: "Test1", parent: null).save()   
  5.         def test2= new Category(name: "Test2", parent: null).save()   
  6.         def test3= new Category(name: "Test3", parent: null).save()   
  7.            
  8.         def test11= new Category(name: "Test11", parent: test1).save()   
  9.         def test12= new Category(name: "Test12", parent: test1).save()   
  10.         def test21= new Category(name: "Test21", parent: test2).save()   
  11.     }   
  12.   
  13.     void testListRoot() {   
  14.         def controller= new CategoryController()
  15.         //categoryList对应返回的model   
  16.         def categoryList= controller.list()?.categoryList   
  17.            
  18.         assertEquals 3, categoryList.size()   
  19.         assertEquals 'Test1', categoryList[0].name   
  20.         assertEquals 'Test2', categoryList[1].name   
  21.         assertEquals 'Test3', categoryList[2].name   
  22.     }   
  23.        
  24.     void testListTest1(){   
  25.         def controller= new CategoryController()
  26.         //其中的params表示的是requestparameter,后面的id是传入的参数。
  27.         //对于session之类以此类推。   
  28.         controller.params.id= 1
  29.         def categoryList= controller.list()?.categoryList   
  30.            
  31.         assertEquals 2, categoryList.size()   
  32.         assertEquals 'Test11', categoryList[0].name   
  33.         assertEquals 'Test12', categoryList[1].name   
  34.     }   
  35. }   

Controller部分代码
  1. class CategoryController {   
  2.     def index = { redirect(action:list,params:params) }   
  3.   
  4.     def allowedMethods = [save:'POST']   
  5.   
  6.     def list = {   
  7.         if(!params.id){   
  8.             return [ categoryList: Category.findAllByParentIsNull() ]   
  9.         }else{   
  10.             def category= Category.get(params.id)   
  11.             if(category){   
  12.                 return [ categoryList: Category.findAll("from Category c where c.parent.id=$params.id"), path: category.getPath()]   
  13.             }else{   
  14.                 flash.message = "Category not found with id ${params.id}"  
  15.                 redirect(action:list)   
  16.             }               
  17.         }   
  18.     }
  19. ......
  20. }  

以上的代码基本上向开发者隐藏了背后的Mock机制,使用起来也更加简单方便。对于如此简单就能完成Controller的测试,我们没有理由不把TDD进行到底。

分享到:
评论
5 楼 sungaofei 2007-11-15  
啥时候又把博客搬到这了,还混成了infoq的编辑。老哥我要离开西安了,有时间一块喝个酒吧
4 楼 foxgem 2007-06-07  
会,缺省grails中使用的内存数据库。
3 楼 yanhua 2007-06-07  
请问foxgem,new Category(name: "Test1", parent: null).save()  会不会操作数据库呢?
2 楼 foxgem 2007-06-04  
最简单的做法就是在ant中去调用grails test,因为它本身就是一个命令。这个ant有很多例子。
1 楼 agile_boy 2007-06-01  
对,通过运行grails test,运行测试还是很方便的,不过目前我还不知道如何集成到ant,maven等环境中。。。

相关推荐

    Grails中文参考手册

    Grails 鼓励全面的测试实践,包括单元测试、集成测试和功能测试。它提供了内置的测试框架,如 Spock,使得编写测试变得简单直观。 **国际化 (i18n) 支持** Grails 提供了对多语言环境的支持,通过 properties 文件...

    grails中文参考手册

    - **测试Grails应用**:Grails内置了单元测试和集成测试框架,通过`grails test`命令执行各种类型的测试。 6. **部署** Grails应用可以部署到多种Java EE容器,如Tomcat、Jetty等。使用`grails war`命令打包应用...

    grails中文文档

    8. **持续集成与自动化测试**:Grails 支持单元测试和集成测试,学习如何编写测试用例,并利用 Jenkins 或 Travis CI 实现持续集成。 **文档资源** 提供的 "Grails1.1中文文档-----2009.3.25.chm" 和 "Grails.zip...

    Grails1.1中文文档

    10. **测试**:文档会覆盖单元测试、集成测试和功能性测试,包括`grails test-app`命令的用法和测试框架的特性。 11. **部署**:最后,文档会介绍如何将Grails应用部署到不同的服务器环境,如Tomcat、Jetty等。 ...

    grails 中文手册

    - Grails 提供了全面的测试支持,包括单元测试、集成测试和功能测试,可以方便地对应用的各个部分进行验证。 9. **Internationalization(国际化)** - Grails 支持多语言环境,通过资源包(messages.properties...

    Grails权威指南 Grails权威指南

    8. **测试支持**:Grails提供了全面的测试工具,包括单元测试、集成测试和功能测试,确保代码质量。`grails test-app`命令即可运行所有相关的测试。 9. **国际化与本地化**:Grails内置了i18n支持,允许开发者轻松...

    grails-用户手册

    Grails内置了测试框架,支持单元测试、集成测试和功能测试。通过`test-app` 命令,可以对应用的各个部分进行自动化测试。 十、国际化与本地化 Grails支持多语言环境,通过`messages.properties` 文件实现国际化,...

    grails中文使用手册

    9. **测试**:Grails内置了测试框架,支持单元测试、集成测试和功能测试,确保代码的质量和可靠性。 10. **国际化与本地化**:Grails支持多语言环境,开发者可以通过资源包轻松实现应用的国际化和本地化。 通过这...

    grails入门经典

    通过本篇文章,我们深入了解了 Grails 的基本概念和操作流程,包括如何创建应用、定义 Domain 类、创建 Controller 以及进行简单的单元测试等。这些基础知识对于初学者来说至关重要,能够帮助他们快速上手 Grails ...

    grails1.3.9

    Grails 1.3.9提供了全面的测试工具,包括单元测试、集成测试和功能性测试。这些测试框架帮助开发者确保代码的质量,降低软件缺陷的风险。 ### 总结 Grails 1.3.9作为一个高效的Web开发框架,结合了Groovy、Spring...

    Grails入门指南中文第二版.pdf

    10. **Grails测试**:了解单元测试、集成测试和功能测试,以及使用Spock框架编写测试的重要性。 11. **Grails插件**:Grails的插件系统允许开发者扩展框架功能,学习如何使用和开发插件。 12. **部署与性能优化**...

    Grails1.1中文文档.zip

    10. **测试**:Grails支持单元测试、集成测试和功能测试,通过`grails test`命令可以运行所有类型的测试。了解如何编写和执行测试用例,确保代码质量与应用稳定性。 综上所述,《Grails 1.1 中文文档》全面覆盖了...

    grails1.1中文文档

    11. **测试支持**:Grails 提供全面的单元测试和集成测试框架,包括模拟对象和交易管理,使得测试驱动开发成为可能。 12. **国际化(i18n)**:Grails 支持多语言环境,允许开发者轻松添加和管理应用程序的国际化...

    grails-2.4.2开发包

    Grails内置了单元测试和集成测试框架,支持Mocking和Stubbing,方便开发者进行高质量的测试驱动开发(TDD)。测试是保障代码质量的重要环节,Grails在这方面的支持使测试变得简单易行。 9. **热部署** Grails支持...

    Grails案例

    - Grails内置了单元测试和集成测试支持,通过`grails test-app`命令执行测试,确保代码质量。 - 使用`@TestFor`注解进行控制器测试,`@Mock`或`@Integration`进行领域类或服务的测试。 总结,"Grails案例"通过...

    grails开发

    Grails提供了完整的测试框架,包括单元测试、集成测试和功能测试。`@Integration`和`@Functional`注解分别用于集成测试和功能测试,确保代码质量。 9. **最佳实践** - 使用Scaffolding快速生成CRUD操作 - 利用...

    grails 文档

    Grails 提供了内置的测试框架,支持单元测试、服务测试和浏览器模拟的集成测试,便于进行TDD(测试驱动开发)。 9. **Grails 动态方法** Grails 的动态方法如`save()`, `delete()`, `update()`等,使得数据操作...

Global site tag (gtag.js) - Google Analytics