Art*_*ich 3 java assertj junit5
我正在从 JUnit 5 和 Hamcrest Assertions 迁移到 AssertJ,但我无法找出从可执行文件中提取实际异常的正确方法。这是一个 JUnit/Hamcrest 示例:
var result = assertThrows(MyException.class, () -> this.objectUnderTest.someMethod(param1, param2, param3));
assertThat(result.getError().getErrorCode(), equalTo(someValue));
assertThat(result.getError().getDescription(), equalTo("someString"));
Run Code Online (Sandbox Code Playgroud)
我想要的是某物。像(断言J)
var result = assertThatThrownBy(() -> this.objectUnderTest.someMethod(param1, param2, param3))
.isInstanceOf(MyException.class);
assertThat(result.getError().getErrorCode(), equalTo(someValue));
assertThat(result.getError().getDescription(), equalTo("someString"));
Run Code Online (Sandbox Code Playgroud)
但从 AssertJ 版本开始,3.21.0该assertThatThrownBy方法为我提供了一个AbstractThrowableAssert<?, ? extends Throwable>类的实例,但我找不到任何可以为我提供该MyException实例的方法。所以现在我最终使用了另一种方法并手动转换为MyException:
Throwable throwable = Assertions.catchThrowable(() -> this.objectUnderTest.doFilterInternal(param1, param2, param3));
MyException exception = (MyException) throwable;
assertThat(exception.getError().getErrorCode(), equalTo(someValue));
assertThat(exception.getError().getDescription(), equalTo("someString"));
Run Code Online (Sandbox Code Playgroud)
AssertJ 提供了两种检查自定义异常的样式:
保持示例的风格,您可以使用以下内容编写catchThrowable:
Throwable throwable = catchThrowable(() -> this.objectUnderTest.someMethod(param1, param2, param3));
assertThat(throwable)
.asInstanceOf(InstanceOfAssertFactories.throwable(MyException.class))
.extracting(MyException::getError)
.returns(1, from(Error::getErrorCode))
.returns("something", from(Error::getDescription));
Run Code Online (Sandbox Code Playgroud)
或者,与catchThrowableOfType:
MyException exception = catchThrowableOfType(() -> this.objectUnderTest.someMethod(param1, param2, param3), MyException.class);
assertThat(exception)
.extracting(MyException::getError)
.returns(1, from(Error::getErrorCode))
.returns("something", from(Error::getDescription));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |