在Java单元测试中表达Vavr Try的“成功”或“抛出异常”

时间:2019-03-18 09:58:14

标签: junit vavr

我有一个简单的单元测试,它对vavr库中Try的对象实例进行断言。

@Test
public void testFoo()
{
    final Try<Foo> result = createMyFooInstance();

    assertThat(result.isSuccess()).isTrue();
}

我的问题集中在测试断言的表达上。 从语义上讲,我想拥有“如果foo成功,则一切正常,否则,抛出封装的异常”。后者很重要,这样我就可以直接在JUnit输出中看到错误原因。

是否可以使用任何便捷的API来很好地表达这些语义?

1 个答案:

答案 0 :(得分:0)

您可以使用

@Test
public void testFoo() {
    final Try<Foo> result = createMyFooInstance();
    result.get();
}

如果resultFailure,则result.get()将引发包装的异常。如果resultSuccess,它将成功。

尽管此解决方案不包含显式断言,但是在resultFailure的情况下,它将隐式失败。

如果您希望断言失败而不是由于异常而导致测试失败,则还可以使用:

@Test
public void testFoo() {
    final Try<Foo> result = createMyFooInstance();
    assertThatCode(result::get).doesNotThrowAnyException();
}