0

如果我使用命令“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 模板为控制器生成单元测试呢?

4

1 回答 1

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
于 2012-11-12T20:25:41.350 回答