Spull测试在NullPointerException上失败

时间:2015-07-29 17:31:43

标签: 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
    }
}

generateToken TokenService 中的现有公共方法。

当我执行测试时,我得到了:

Failure:  test generateToken(com.iibs.security.TokenServiceSpec)
|  java.lang.NullPointerException
    at com.iibs.security.TokenServiceSpec.test generateToken(TokenServiceSpec.groovy:22)

当我调试它时,我可以验证 tokenService 是否已正确实例化。 这可能是造成这种失败的原因吗?

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

在编写单元测试用例时,您无需使用以下方法创建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
   }
}