java - Spock 抛出异常测试

标签 java unit-testing groovy spock

我用 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()
}

它失败了,因为 AnotherCustomExceptio 被抛出。但是在 try{}catch block 中我捕获了这个异常并抛出一个 CustomException 所以我预计我的方法将抛出 CustomException 而不是 另一个自定义异常。我如何测试它?

最佳答案

我相信您的 then block 需要修复。尝试以下语法:

then:
thrown CustomException

关于java - Spock 抛出异常测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22757014/

相关文章:

java - Groovy 数组初始化

java - 如何禁用默认打字。是否默认禁用

unit-testing - 您应该在单元测试中使用 Moq 提供的 "Verify"和 "VerifyAll"方法吗?

c++ - 有什么方法可以在 CppUTest 中模拟全局变量吗?

java - Mockito : Testing boolean method with when(). .then()

grails - 限制访问staticcontent,grails Web-app中的URL

compiler-construction - 如何缓存由 Groovy 脚本引擎生成的编译类?

java - Kafkameter NoClassDefFoundError

java - 重新排序 GridLayout SWT

Java 集合属性初始化 - 最佳实践