当前位置: 首页 > 知识库问答 >
问题:

Spock抛出异常测试

卞博简
2023-03-14

我用Spock测试Java代码。我测试这段代码:

 try {
    Set<String> availableActions = getSthAction()
    List<String> goodActions = getGoodAction()
    if (!CollectionUtils.containsAny(availableActions ,goodActions )){
       throw new CustomException();
    }
} catch (AnotherCustomExceptio e) {
     throw new CustomException(e.getMessage());
}

我写了一个测试

def "some test"() {
    given:
    bean.methodName(_) >> {throw new AnotherCustomExceptio ("Sth wrong")}
    def order = new Order();
    when:
    validator.validate(order )
    then:
    final CustomException exception = thrown()
}

它失败是因为抛出了另一个CustomException。但是在try{}catch块中,我捕获这个异常并抛出一个CustomException,因此我希望我的方法将抛出CustomException,而不是另一个customexceptio。如何测试它?

共有3个答案

司徒茂实
2023-03-14

可以有多种方法来处理异常:

thrown(CustomException)

thrown CustomException

我们还可以检查测试用例中是否没有抛出异常-

then:

noExceptionThrown()
崔博延
2023-03-14

例如,如果要评估抛出异常的消息,可以执行以下操作:

then:
def e = thrown(CustomException)
e.message == "Some Message"
柳灿
2023-03-14

我相信您的然后块需要修复。请尝试以下语法:

then:
thrown CustomException
 类似资料:
  • 我使用Groovy和Gradle进行测试。 我的应用程序代码中有以下几行: 如果我模拟(使用,因为是),以便返回,我希望在.一个是。 但这并没有出现在测试结果中,测试结果都是绿色的。发现这种情况的唯一方法是查看该类的测试结果:然后您会看到显示“stderr”的灰色按钮。 这似乎是因为包络正在“吞噬”它... Spock中有什么方法可以使中的异常导致测试失败吗? 另一个可能需要解释的东西是Spock

  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 由于一个我不知道的事件,调用在我的Ubuntu18.04中不再起作用。(自4月开始运行)。或I阶段尝试的任何其他生命周期都运行良好。 例如,如果我在克隆到中的Apache Commons IO的最新版本中运行,If显示 target/surefire-reports包含以下内容的许多重复 我尝试的任何其他项目都表现出类似的行为。 我尝试下载maven 3.5.4,解压缩它,通过将它添加到路径中,并

  • 问题内容: 考虑以下代码: 无需添加方法签名即可编译该代码。(它与同样表现到位,太)。 我理解为什么 可以 安全地运行它,因为实际上不能将其引发在块中,因此不能引发已检查的异常。我有兴趣知道在何处指定此行为。 并非永远都不会达到目标:以下代码也会编译: 但是,如果抛出一个检查的异常,它不会像我期望的那样编译: 在JLS Sec 11.2.2中 ,它说: 一,其抛出的表达式语句(§14.18)具有静

  • 在你可以捕获异常之前,一些代码必须抛出一个异常。任何代码都可能会抛出异常:您的代码,来自其他人编写的包(例如Java平台附带的包)或Java运行时环境的代码。无论是什么引发的异常,它总是通过 throw 语句抛出。 您可能已经注意到,Java平台提供了许多异常类。所有类都是Throwable类的后代,并且都允许程序区分在程序执行期间可能发生的各种类型的异常。 您还可以创建自己的异常类来表示在您编写

  • 问题内容: 我试图在Netbeans中重构一个大型程序,但我有点迷茫。我从来没有非常模块化,但是现在通过实际学习如何做到这一点来尝试纠正这种情况,并在将来纠正这种情况。不幸的是,我在将某些教程翻译成我的程序时遇到了麻烦。所以我希望这里有人可以帮忙。目前,我正在尝试分解一部分采用特定格式的文件并制成表格的代码。我知道我需要创建一个类并使用它来创建表对象,但是我不确定如何做。我有一个主文件,用于获取文