我有一个简单的单元测试,它对vavr库中Try
的对象实例进行断言。
@Test
public void testFoo()
{
final Try<Foo> result = createMyFooInstance();
assertThat(result.isSuccess()).isTrue();
}
我的问题集中在测试断言的表达上。 从语义上讲,我想拥有“如果foo成功,则一切正常,否则,抛出封装的异常”。后者很重要,这样我就可以直接在JUnit输出中看到错误原因。
是否可以使用任何便捷的API来很好地表达这些语义?
答案 0 :(得分:0)
您可以使用
@Test
public void testFoo() {
final Try<Foo> result = createMyFooInstance();
result.get();
}
如果result
是Failure
,则result.get()
将引发包装的异常。如果result
是Success
,它将成功。
尽管此解决方案不包含显式断言,但是在result
是Failure
的情况下,它将隐式失败。
如果您希望断言失败而不是由于异常而导致测试失败,则还可以使用:
@Test
public void testFoo() {
final Try<Foo> result = createMyFooInstance();
assertThatCode(result::get).doesNotThrowAnyException();
}