如何使用AssertJ验证静态方法引发异常?

时间:2019-08-08 07:38:39

标签: 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)无法应用于(void)


assertThatExceptionOfType相同。

是否有可能使用AssertJ测试静态方法实际上引发了未经检查的异常?我的考试应该改变什么?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

更改为这种方式。您需要通过lambda来使用assertj进行测试

assertThatThrownBy(()->validatePostcode("","")).isInstanceOf(InvalidFieldException.class);