对于Controller的单元测试,Grails也提供了很方便的支持,使得书写非常简单,有代码为证:
单元测试代码
- class CategoryControllerTests extends GroovyTestCase {
-
- void setUp(){
- def test1= new Category(name: "Test1", parent: null).save()
- def test2= new Category(name: "Test2", parent: null).save()
- def test3= new Category(name: "Test3", parent: null).save()
-
- def test11= new Category(name: "Test11", parent: test1).save()
- def test12= new Category(name: "Test12", parent: test1).save()
- def test21= new Category(name: "Test21", parent: test2).save()
- }
-
- void testListRoot() {
- def controller= new CategoryController()
- //categoryList对应返回的model
- def categoryList= controller.list()?.categoryList
-
- assertEquals 3, categoryList.size()
- assertEquals 'Test1', categoryList[0].name
- assertEquals 'Test2', categoryList[1].name
- assertEquals 'Test3', categoryList[2].name
- }
-
- void testListTest1(){
- def controller= new CategoryController()
- //其中的params表示的是requestparameter,后面的id是传入的参数。
- //对于session之类以此类推。
- controller.params.id= 1
- def categoryList= controller.list()?.categoryList
-
- assertEquals 2, categoryList.size()
- assertEquals 'Test11', categoryList[0].name
- assertEquals 'Test12', categoryList[1].name
- }
- }
Controller部分代码
- class CategoryController {
- def index = { redirect(action:list,params:params) }
-
- def allowedMethods = [save:'POST']
-
- def list = {
- if(!params.id){
- return [ categoryList: Category.findAllByParentIsNull() ]
- }else{
- def category= Category.get(params.id)
- if(category){
- return [ categoryList: Category.findAll("from Category c where c.parent.id=$params.id"), path: category.getPath()]
- }else{
- flash.message = "Category not found with id ${params.id}"
- redirect(action:list)
- }
- }
- }
- ......
- }
以上的代码基本上向开发者隐藏了背后的Mock机制,使用起来也更加简单方便。对于如此简单就能完成Controller的测试,我们没有理由不把TDD进行到底。
分享到:
相关推荐
Grails 鼓励全面的测试实践,包括单元测试、集成测试和功能测试。它提供了内置的测试框架,如 Spock,使得编写测试变得简单直观。 **国际化 (i18n) 支持** Grails 提供了对多语言环境的支持,通过 properties 文件...
- **测试Grails应用**:Grails内置了单元测试和集成测试框架,通过`grails test`命令执行各种类型的测试。 6. **部署** Grails应用可以部署到多种Java EE容器,如Tomcat、Jetty等。使用`grails war`命令打包应用...
8. **持续集成与自动化测试**:Grails 支持单元测试和集成测试,学习如何编写测试用例,并利用 Jenkins 或 Travis CI 实现持续集成。 **文档资源** 提供的 "Grails1.1中文文档-----2009.3.25.chm" 和 "Grails.zip...
10. **测试**:文档会覆盖单元测试、集成测试和功能性测试,包括`grails test-app`命令的用法和测试框架的特性。 11. **部署**:最后,文档会介绍如何将Grails应用部署到不同的服务器环境,如Tomcat、Jetty等。 ...
- Grails 提供了全面的测试支持,包括单元测试、集成测试和功能测试,可以方便地对应用的各个部分进行验证。 9. **Internationalization(国际化)** - Grails 支持多语言环境,通过资源包(messages.properties...
8. **测试支持**:Grails提供了全面的测试工具,包括单元测试、集成测试和功能测试,确保代码质量。`grails test-app`命令即可运行所有相关的测试。 9. **国际化与本地化**:Grails内置了i18n支持,允许开发者轻松...
Grails内置了测试框架,支持单元测试、集成测试和功能测试。通过`test-app` 命令,可以对应用的各个部分进行自动化测试。 十、国际化与本地化 Grails支持多语言环境,通过`messages.properties` 文件实现国际化,...
9. **测试**:Grails内置了测试框架,支持单元测试、集成测试和功能测试,确保代码的质量和可靠性。 10. **国际化与本地化**:Grails支持多语言环境,开发者可以通过资源包轻松实现应用的国际化和本地化。 通过这...
通过本篇文章,我们深入了解了 Grails 的基本概念和操作流程,包括如何创建应用、定义 Domain 类、创建 Controller 以及进行简单的单元测试等。这些基础知识对于初学者来说至关重要,能够帮助他们快速上手 Grails ...
Grails 1.3.9提供了全面的测试工具,包括单元测试、集成测试和功能性测试。这些测试框架帮助开发者确保代码的质量,降低软件缺陷的风险。 ### 总结 Grails 1.3.9作为一个高效的Web开发框架,结合了Groovy、Spring...
10. **Grails测试**:了解单元测试、集成测试和功能测试,以及使用Spock框架编写测试的重要性。 11. **Grails插件**:Grails的插件系统允许开发者扩展框架功能,学习如何使用和开发插件。 12. **部署与性能优化**...
10. **测试**:Grails支持单元测试、集成测试和功能测试,通过`grails test`命令可以运行所有类型的测试。了解如何编写和执行测试用例,确保代码质量与应用稳定性。 综上所述,《Grails 1.1 中文文档》全面覆盖了...
11. **测试支持**:Grails 提供全面的单元测试和集成测试框架,包括模拟对象和交易管理,使得测试驱动开发成为可能。 12. **国际化(i18n)**:Grails 支持多语言环境,允许开发者轻松添加和管理应用程序的国际化...
Grails内置了单元测试和集成测试框架,支持Mocking和Stubbing,方便开发者进行高质量的测试驱动开发(TDD)。测试是保障代码质量的重要环节,Grails在这方面的支持使测试变得简单易行。 9. **热部署** Grails支持...
- Grails内置了单元测试和集成测试支持,通过`grails test-app`命令执行测试,确保代码质量。 - 使用`@TestFor`注解进行控制器测试,`@Mock`或`@Integration`进行领域类或服务的测试。 总结,"Grails案例"通过...
Grails提供了完整的测试框架,包括单元测试、集成测试和功能测试。`@Integration`和`@Functional`注解分别用于集成测试和功能测试,确保代码质量。 9. **最佳实践** - 使用Scaffolding快速生成CRUD操作 - 利用...
Grails 提供了内置的测试框架,支持单元测试、服务测试和浏览器模拟的集成测试,便于进行TDD(测试驱动开发)。 9. **Grails 动态方法** Grails 的动态方法如`save()`, `delete()`, `update()`等,使得数据操作...