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

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

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

  • 那么,如何使用Test.groovy模板为 Controller 生成单元测试?

    最佳答案

    在创建 Artifact 或使用脚手架时,Grails使用模板来创建域类, Controller , View 等。默认模板是Grails发行版的一部分,具有开箱即用的功能,但可以针对项目的特定需求进行定制。

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

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

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

    所以你需要编辑:
  • src/templates/artifacts/Tests.groovy文件,在执行grails create-unit-testgrails create-integration-test命令时。
  • 执行src/templates/scaffolding/Test.groovygrails generate-all命令时的
  • grailsgenerate-controller

  • 在您的情况下,请重新生成 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
    

    09-10 05:54
    查看更多