java - 如何使用 AssertJ 验证静态方法抛出异常?

标签 java unit-testing exception static assertj

当我尝试测试这个方法时

    static void validatePostcode(final String postcode, final String addressLine)
    {
        if(! hasValidPostcode(postcode, addressLine)) {
            throw new InvalidFieldException("Postcode is null or empty ");
        }
    }

使用下面的测试

    @Test
    public void testThrowsAnException()
    {
        assertThatThrownBy(validatePostcode("", "")).isInstanceOf(InvalidFieldException.class);
    }

我在 IntelliJ 中收到此错误消息

assertThatThrownBy (org.assertj.core.api.ThrowableAssert.ThrowingCallable) in Assertions cannot be applied to (void)


assertThatExceptionOfType 相同。

是否可以使用 AssertJ 测试静态方法实际上抛出未经检查的异常?我应该在测试中更改什么?

最佳答案

如编译错误所示,该方法需要一个抛出可调用对象。

@Test
public void testThrowsAnException()
{
    assertThatThrownBy(() -> validatePostcode("", "")).isInstanceOf(InvalidFieldException.class);
}

关于java - 如何使用 AssertJ 验证静态方法抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57407519/

相关文章:

c# - 捕获大多数派生异常?

Java:创建其构造函数可能引发异常的静态类成员

java - DefaultTreeCellRenderer() 定期执行

java - 降序快速排序只成功了一半

javascript - React 测试 componentWillReceiveProps

java - 如何以及何时使用(或不使用)三种特定情况下的异常(exception)情况?

java - 如何处理JavaCPP避免数据复制?

java - JTable 行的默认颜色

c# - 无法找到 testhost.dll。请发布您的测试项目并重试

node.js - 单元测试查询数据库的方法