Spock/Grails - Groovy:无法解析类grails.test.mixin.TestFor并且无法解析类spock.lang.Specification

5 grails spock

我创建一个斯波克测试我的插件project-plugin和我的主要项目名称main-project被用project-plugin作为一个插件.因此,当我为我的插件创建Spock测试时,抛出上面的错误意味着它的警告project-plugin因为下面的类而有错误.

为插件创建Spock测试与为主项目创建Spock测试有所不同.

例如,我创建了一个新的示例项目,并为服务创建了spock测试,该测试没有任何错误.

import grails.test.mixin.TestFor
import spock.lang.Specification
@TestFor(DataImportService){

}
Run Code Online (Sandbox Code Playgroud)

我还尝试使用命令grails> refresh-dependencies -Dplugins.useInline=true 依赖刷新刷新依赖关系.但仍然是同样的错误.

我应该用main-project或运行我的单元测试用例plugin-project.

如何排序这个问题.

谢谢.

rai*_*dog 2

我已经为我所处理的应用程序中的内联插件创​​建了许多 Spock 测试(单元和集成)。基本上,该应用程序是一个外壳和一些就地插件——应用程序本身非常简单。

组织非常简单。每个应用程序中的 BuildConfig.groovy 使用 grails.plugin.location.'plugin-name' = '../../plugins/plugin-name' 选择其组成的插件

+- applications
|     |
|     +- app1
|     +- app2
|     +- app3
|
+- plugins
      |
      +- plugin1 
      +- plugin2 (there are > 30 plugins in total)
Run Code Online (Sandbox Code Playgroud)

手动或通过 IntelliJ IDE 创建测试没有什么特别的。测试全部位于应用程序>测试>[集成| unit] 文件夹(是的,我应该重构以使代码覆盖率正常工作)。适用于域类、控制器或服务。(Grails 2.4.3 / 2.4.5)

import grails.test.mixin.TestFor
import grails.test.mixin.Mock
import spock.lang.specification
import spock.lang.Unroll

@TestFor(SomeService)
@Mock([OtherService])
class SomeService extends Specification {
    def "some method"() {
        given:
            // setup
        when:
            // action
        then:
            // test outcomes
        cleanup:
            // undo any metaClassing, etc
    }
}
Run Code Online (Sandbox Code Playgroud)