0

我正在开发一个 grails 应用程序。在应用程序中,视图和控制器只是 grails 组件。而不是使用域和服务应用程序分别具有 DTO 和 BL java 文件。

我正在编写 junit 测试,其中我需要使用 spring 安全服务重新验证用户。但是当我运行测试时,它给了我以下错误:

[javac] ... error: package grails.plugins.springsecurity does not exist
[javac] import grails.plugins.springsecurity.SpringSecurityService;
[javac] ... error: package grails.plugins.springsecurity does not exist
[javac] private SpringSecurityService springSecurityService = ...

我不知道为什么即使在导入时也会出错。代码:

import grails.plugins.springsecurity.SpringSecurityService;
....
SpringSecurityService springSecurityService = ...
...

或者

还有其他更好的方法可以在 junit 测试中重新验证用户身份吗?

我已经用谷歌搜索了如何在 junit 测试中对用户进行身份验证,但没有找到任何有效的解决方案。

4

1 回答 1

1

我不确定为什么会发生这个特定问题,但是您无法通过单元测试真正测试安全性。Spring Security 实现为过滤器链,因此您需要创建请求并应用该链。

这可以被适当地嘲笑,但这将是很多工作。您最好的选择是使用功能测试,使用真实运行的服务器和真实请求。其他方法的误报风险太高了。

于 2013-08-29T16:32:19.003 回答