Spock GlobalExtension未加载(grails)

9

我希望在我的grails应用程序中为所有的spock geb规范注册一个监听器,因此我添加了一个IGlobalExtension到myapp/src/groovy

package myapp.spock

class TakeScreenshotExtension implements IGlobalExtension {
    @Override
    void visitSpec(SpecInfo specInfo) {
        System.err.println "ADDING LISTENER"
        specInfo.addListener(new TakeScreenshotOnFailureListener())
    }
}

接下来,我将org.spockframework.runtime.extension.IGlobalExtension文件添加到myapp/src/resources/META-INF/services中,其中包含以下行:

myapp.spock.TakeScreenshotExtension

据我所了解,当运行grails test-app functional:时,扩展应该被加载,但我在输出中没有看到"ADDING LISTENER"。我做错了什么?


你找到解决方案了吗? - rdmueller
难道不应该是 System.err.println("ADDING LISTENER") 吗? - ymz
1
在Java中,你需要花括号,但在Groovy中则不需要。 - rdmueller
2个回答

3
IGlobalExtension 文件的正确位置似乎应该是 grails-app/conf/META-INF/services,但是我遇到了一个 class not found Exception 的问题,因为 Spock 无法加载我的扩展类。有任何想法在哪里放置?

1
我不确定在运行功能测试时确切的类路径设置是什么,但我会怀疑 myapp/src/resources/META-INF/services/org.spockframework.runtime.extension.IGlobalExtension 可能没有添加到测试类路径中,因此 Spock 不知道您的扩展。 我建议将该文件移动到 myapp/test/functional/META-INF/services/org.spockframework.runtime.extension.IGlobalExtension 并将扩展类一起移动到 myapp/test/functional 下。

将该文件移动到myapp/test/functional/META-INF/services/org.spockframework.runtime.extension下,同时将扩展类一起移动到myapp/test/functional下。--> 我尝试过这样做,但没有成功,有什么建议或意见吗? - user1511808

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接