gpt4 book ai didi

java - ExpectedException 的原因是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:16 29 4
gpt4 key购买 nike

我正在尝试验证我所有的异常都是正确的。因为值包装在 CompletableFutures 中,抛出的异常是 ExecutionException,原因是我通常会检查的异常。快速示例:

void foo() throws A {
try {
bar();
} catch B b {
throw new A(b);
}
}

所以 foo() 转换由 bar() 抛出的异常,所有这些都在 CompletableFuturesAsyncHandlers< 中完成(我不会复制整个代码,仅供引用)

在我的单元测试中,我正在让 bar() 抛出一个异常,并想在调用 foo() 时检查它是否被正确翻译:

Throwable b = B("bleh");
when(mock.bar()).thenThrow(b);
ExpectedException thrown = ExpectedException.none();
thrown.expect(ExecutionException.class);
thrown.expectCause(Matchers.allOf(
instanceOf(A.class),
having(on(A.class).getMessage(),
CoreMatchers.is("some message here")),
));

到目前为止一切顺利,但我还想验证异常 A 的原因是异常 Bhaving(on(A.class).getCause (), CoreMatchers.is(b)) 导致 CodeGenerationException --> StackOverflowError

TL;DR:如何获取预期异常的原因?

最佳答案

也许你应该尝试使用简单的 hasProperty匹配器,为了隔离问题:

thrown.expectCause(allOf(
instanceOf(A.class),
hasProperty("message", is("some message here")),
));

关于java - ExpectedException 的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40809049/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com