【问题标题】:Spock interaction test takes precedence over exceptionsSpock 交互测试优先于异常
【发布时间】:2014-11-05 03:39:29
【问题描述】:

为什么以下测试失败并显示“调用太少”,而不是在调用模拟方法之前在 do 方法中引发的实际异常?

有没有办法改变这种行为?

@Test
def "Should Create"() {
    when: "We do stuff"
    this.someStuff.do()

    then: "Should not get exception"
    notThrown(Exception)

    and: "Should send mail"
    1 * mailSession.send(_, _, _, _, _, _, _)
}

【问题讨论】:

  • 信息太少,无法诊断。

标签: java unit-testing groovy spock


【解决方案1】:

您发现了一个错误。请在http://issues.spockframework.org 提出问题。

PS:除了notThrown(Exception),更常见的是使用noExceptionThrown()。代替1 * mailSession.send(_, _, _, _, _, _, _),使用1 * mailSession.send(*_) 更为常见。 @Test 是一个对 Spock 没有影响的 JUnit 注解。

【讨论】:

    【解决方案2】:

    do() 方法中抛出的确切异常类型是什么?

    您可能想使用noExceptionThrown() Spock 方法而不是notThrown(Exception)

    【讨论】:

    • 现在不确定,但我认为异常的类型并不重要。问题是当抛出异常时,mailSession.send 不会被调用,因此“then”和“and”这两个部分都适用,但“应该发送邮件”优先。如果我把“应该发送邮件”检查去掉,“不应该得到异常”部分就可以正确处理。
    • 老实说,没有足够的细节可以说明。
    猜你喜欢
    • 2016-01-06
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多