当我尝试测试这个方法时
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 中遇到了这个错误:
Assertions中的 assertThatThrownBy(org.assertj.core.api.ThrowableAssert.ThrowingCallable) 无法应用于 (void)
使用 assertThatExceptionOfType
也是同样的情况。
是否可能使用 AssertJ 测试静态方法是否实际抛出未经检查的异常?我应该在测试中做出哪些改变?
@Test(expected = ...)
。这基本上就像在整个方法体中包装了try/catch一样,因此如果测试中的任何内容抛出该异常,测试就会“通过”,而不仅仅是您想要测试的内容。因此,特别是对于未经检查的异常,即使您认为它正在执行您想要的操作,您的测试也可能显示为已通过。 - Andy TurnerisInstanceOf
之后链接其他断言,例如hasMessage
,请参见 https://assertj.github.io/doc/#assertj-core-exception-assertions-assertThatThrownBy - Joel Costigliola