Unit testing 使用自定义编解码器时发生Groovy/Grails单元测试错误

Unit testing 使用自定义编解码器时发生Groovy/Grails单元测试错误,unit-testing,testing,grails,groovy,codec,Unit Testing,Testing,Grails,Groovy,Codec,我对Grails网站上的“Grails入门”教程有意见。它让我在utils目录中创建一个自定义编解码器。我已经创建了编解码器,它可以在应用程序中工作,但是当我将编解码器添加到我的控制器单元测试中时,正如教程所建议的,它失败了。以下是我在运行“grails测试应用程序UserController-unit”时收到的消息: “类:racetrack.UserControllerTests没有这样的属性:SHACodec” 我尝试使用loadCodec()方法包含编解码器,但得到了相同的消息 有人对如

我对Grails网站上的“Grails入门”教程有意见。它让我在utils目录中创建一个自定义编解码器。我已经创建了编解码器,它可以在应用程序中工作,但是当我将编解码器添加到我的控制器单元测试中时,正如教程所建议的,它失败了。以下是我在运行“grails测试应用程序UserController-unit”时收到的消息:

“类:racetrack.UserControllerTests没有这样的属性:SHACodec”

我尝试使用loadCodec()方法包含编解码器,但得到了相同的消息

有人对如何解决这个单元测试问题有什么建议吗?如果是导入问题,那么如果我的SHACodec.groovy文件位于/grails app/utils/中,它的导入路径会是什么


我的教程代码可从下载。

编解码器不会自动加载,您需要加载它们

有关更多详细信息,请参阅本文:

我也遇到了这个问题(正在处理Grails书中的代码)

我发现有效的方法是:显式加载编解码器。您不需要将其包含在导入中。确保SHACodec.groovy文件位于grails app/utils目录中

下面的代码片段向您展示了我是如何做到这一点的

class UserControllerTests extends ControllerUnitTestCase{
    protected void setUp() {
        super.setUp()

        loadCodec (org.codehaus.groovy.grails.plugins.codecs.Base64Codec)
        loadCodec (racetrack.SHACodec)
    }
    // ...
}