Groovy中的Throw / Catch异常

时间:2013-04-09 18:28:48

标签: groovy spock

我是Groovy的新手并尝试在我的应用程序中实现Spock框架。 这是我的测试代码:

def "Test class with mock object"()  {

        setup:
        SomeObject sp = Mock()
        test= TestClass()

        when:
        System.out.println('comes here');
        push.exec(sp)

        then:
        sp.length == 1

    }

这里TestClass抛出一些异常,我必须在测试方法中捕获或再次抛出它。我试过了

try {

  push.exec(sp)
} catch (Exception e) {

}

但仍然得到

groovy.lang.MissingMethodException: No signature of method: test.spock.TestClassTest.TestClass() is applicable for argument types: () values: []
Possible solutions: use([Ljava.lang.Object;), use(java.util.List, groovy.lang.Closure), use(java.lang.Class, groovy.lang.Closure), dump(), with(groovy.lang.Closure), each(groovy.lang.Closure)

2 个答案:

答案 0 :(得分:5)

而不是test = TestClass(),它应该是test = new TestClass()。要测试预期的异常,请使用Specification.thrown而不是try-catch。有关示例,请参阅Spock的Javadoc

答案 1 :(得分:4)

这是在Spock中处理异常的正确方法:

def "Test class with mock object"()  {

    setup:
    SomeObject sp = Mock()
    test= TestClass()

    when:
    System.out.println('comes here');
    push.exec(sp)

    then:
    thrown(YourExceptionClass)
    sp.length == 1

}

或者如果您想查看异常中的某些数据,可以使用以下内容:

    then:
    YourExceptionClass e = thrown()
    e.cause == null