测试在spock单元测试中捕获的java函数中引发的异常

时间:2015-04-21 05:30:48

标签: unit-testing groovy gradle spock

java version 1.7.0_75  
Gradle 2.2
Groovy: 2.3.6
spock-core.1.0

您好,

我有一个java函数,我正在尝试使用spock框架进行单元测试。如果存在NullPointerException

,该函数将抛出异常
 public void disconnect() throws NullPointerException {
        if(mClientConnection == null) {
            throw new NullPointerException("mClientConnection has an invalid reference");
        }

        if(mClientConnection.isConnected()) {
            mClientConnection.disconnect();
        }

        mClientConnection = null;
    }

我正试图在我的spock单元测试中测试这个条件。下面我试图捕获是否抛出NullPointerException。但是,这是不正确的,因为我收到以下错误:

'expect' is not allowed here; instead, use one of: [and, then] @ thrown() != nullPointerException

这是我的单元测试spock测试:

def 'Disconnect from a connected client'() {
    setup:
    SmackClient smackClient = SmackClient.getSmackClient()

    when: /* Disconnect from a existing connection */
    smackClient.disconnect()

    expect: 
    thrown() != nullPointerException
}

非常感谢任何建议,

1 个答案:

答案 0 :(得分:4)

要遵循when的正确字词为then(如错误消息所示)。

也是thrown(NullPointerException)

参见文档:

  

Exception Conditions

     

异常条件用于描述when块应该抛出异常。它们使用thrown()方法定义,传递预期的异常类型。例如,要描述从空堆栈弹出应抛出EmptyStackException,您可以编写以下内容:

when:
stack.pop()

then:
thrown(EmptyStackException)
stack.empty