java - Spock 测试因 NullPointerException 失败

标签 java unit-testing grails service spock

我正在开发一个小型 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
    }
}

其中 generateTokenTokenService 中现有的公共(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/

相关文章:

grails - 成功调用服务后,Grails无法提交

java - 在java中的不同构造函数中使用1个变量

Java多线程,Thread.sleep暂停当前线程但不会继续其他线程

java - 实现像JConsole这样的程序需要什么

为缓冲区溢出错误创建测试用例 (C/c++)

python - SQLAlchemy 中查询的单元测试

grails - 如何在 Grails Controller 之间传递错误消息?

java - 只能为 HMAC 签名指定 key 字节。请指定一个 PublicKey 或 PrivateKey 实例

javascript - Node.js 断言库与其他断言库

grails - Grails问题在多对多关系中将数据持久保存在联接表中