如果我使用命令“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-test
或grails create-integration-test
命令时。 src/templates/scaffolding/Test.groovy
或grails 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