当我尝试测试此方法时
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测试静态方法实际上引发了未经检查的异常?我的考试应该改变什么?
答案 0 :(得分:3)
如编译错误所示,该方法期望抛出一个可调用对象。
@Test
public void testThrowsAnException()
{
assertThatThrownBy(() -> validatePostcode("", "")).isInstanceOf(InvalidFieldException.class);
}
答案 1 :(得分:2)
更改为这种方式。您需要通过lambda来使用assertj进行测试
assertThatThrownBy(()->validatePostcode("","")).isInstanceOf(InvalidFieldException.class);