我正在开发一个小型 grails 应用程序,并开始使用 spock 作为测试框架。
此时测试非常简单:
@TestFor(TokenService)
class TokenServiceSpec extends Specification {
TokenService tokenService = new TokenService()
def setup() {
}
def cleanup() {
}
def "test generateToken"() {
expect:
tokenService.generateToken(5).length() == 5
}
}
其中 generateToken 是 TokenService 中现有的公共(public)方法。
当我执行测试时,我得到:
Failure: test generateToken(com.iibs.security.TokenServiceSpec)
| java.lang.NullPointerException
at com.iibs.security.TokenServiceSpec.test generateToken(TokenServiceSpec.groovy:22)
当我调试它时,我可以验证tokenService是否已正确实例化。 这次失败的原因可能是什么?
感谢您的建议。
最佳答案
当您编写单元测试用例时,您不需要使用以下方法创建 TokenService
对象:-
TokenService tokenService = new TokenService()
那里已经存在一个隐式的service
对象,您可以像这样使用它:-
@TestFor(TokenService)
class TokenServiceSpec extends Specification {
def setup() {
}
def cleanup() {
}
def "test generateToken"() {
expect:
service.generateToken(5).length() == 5
}
}
关于java - Spock 测试因 NullPointerException 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31707305/