【问题标题】:How to generate unit tests for controller using the scaffolding template Test.groovy?如何使用脚手架模板 Test.groovy 为控制器生成单元测试?
【发布时间】:2012-11-12 14:31:53
【问题描述】:

如果我使用命令“create-controller”生成控制器,Grails 会生成控制器和单元测试(使用模板 /src/templates/scaffolding/Test.groovy)。

在更改模板的某些部分后,我现在想重新生成单元测试,但 Grails 不会生成它们。我试过了:

  • "create-unit-test" 但这将使用模板 /src/templates/testing/UnitTest.groovy 和 "create-integration-test" 将使用模板 /src/templates/testing/Generic.groovy

那么如何使用 Test.groovy 模板为控制器生成单元测试?

【问题讨论】:

    标签: unit-testing testing grails controller scaffolding


    【解决方案1】:

    在创建工件或使用脚手架时,Grails 使用模板来创建域类、控制器、视图等。默认模板是 Grails 发行版的一部分,用于开箱即用的行为,但可以根据项目的特定需求进行定制。

    将 Grails 在代码生成期间使用的模板复制到您的项目目录:

    $ grails install-templates
    
    src/templates/
    ├── artifacts
    │   ├── Tests.groovy
    │   ├── ...
    ├── scaffolding
    │   ├── Test.groovy
    │   ├── ...
    └── war
        └── web.xml
    

    artifacts 目录包含 create-* 命令使用的模板。
    脚手架目录包含 generate-* 命令使用的模板。
    war 目录包含用于生成部署描述符的 web.xml 模板。

    所以你需要编辑:

    • src/templates/artifacts/Tests.groovy 文件,当执行grails create-unit-testgrails create-integration-test 命令时。

    • src/templates/scaffolding/Test.groovy 执行grails generate-allgrails generate-controller 命令时。

    在您的情况下,重新生成您的控制器测试并仅覆盖您的测试文件

    $ grails generate-controller com.arturoherrero.Post
    | Generating controller for domain class com.arturoherrero.Post
    > File /grails-app/controllers/com/arturoherrero/PostController.groovy already exists. Overwrite?[y,n,a] n
    > File /test/unit/com/arturoherrero/PostControllerTests.groovy already exists. Overwrite?[y,n,a] y
    | Finished generation for domain class com.arturoherrero.Post
    

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 2020-05-16
      • 2012-04-09
      • 2014-09-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多