2 回答

TA贡献1893条经验 获得超10个赞
将引发一个异常,其类型为 。这是一个.FunctionalException
cause
FunctionalException
ConstraintViolationException
假设是 JUnit 5 方法,它将返回引发的异常。因此,您可以简单地获取其原因并对此原因添加其他检查。assertThrows

TA贡献1880条经验 获得超4个赞
我假设 ConstraintViolationException 将是 FunctionalException 的根本原因。在这种情况下,要检查是否引发了异常,您可以执行如下操作:
Executable executable = () -> comptabiliteManager.checkViolation(vViolations);
Exception exception = assertThrows(FunctionalException.class, executable);
assertTrue(exception.getCause() instanceof ConstraintViolationException);
另一个可能更干净的解决方案是使用AssertJ及其API。
Throwable throwable = catchThrowable(() -> comptabiliteManager.checkViolation(vViolations));
assertThat(throwable).isInstanceOf(FunctionalException.class)
.hasCauseInstanceOf(ConstraintViolationException.class);
您必须从 AssertJ 的 Assertions 类导入方法:
import static org.assertj.core.api.Assertions.catchThrowable;
import static org.assertj.core.api.Assertions.assertThat;
我鼓励您查看此API,因为它具有许多流畅的方法。
添加回答
举报