为什么在这个Grails单元测试中SpringSecurityUtils为null?

时间:2012-07-06 11:20:32

标签: grails spring-security grails-plugin

在Grails 2.0.4中,我正在尝试编写一个调用静态SpringSecurityUtils.reauthenticate的控制器单元测试。该测试在该调用上返回NullPointerException。在调试器中,我可以看到没有填充SpringSecurityUtils的Groovy动态属性(declaredMethods等)。

我注意到在运行测试时,单元测试失败后会发出<配置Spring Security Core“日志消息。这是一个示例测试:

class ReproTest {
    void testSpringSecurityUtils() {
        String.valueOf(true) // OK: a public final class from the JDK
        URLUtils.isRelativeURL("foo")  // OK: a class from another plugin
        SpringSecurityUtils.reauthenticate "user", "pw" // fails, NPE
    }
}

我最初的反应是,在单元测试期间可能无法访问插件,但如果是这样,为什么URLUtils调用有效?为什么测试得到“足够的”来初始化插件,但测试完成后呢?

1 个答案:

答案 0 :(得分:3)

对于单元测试,容器未启动。没有春天注射或“grails goodness”正在发生。您可以在日志中看到插件在单元测试运行后正在初始化,因为它[container]确实为集成测试启动。如果你想测试SpringSecurityUtils,虽然猜测它已在插件中正确测试,你可能想要编写集成测试。