1

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

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

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

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

是否有任何方便的 API 可以用来很好地制定语义?

4

1 回答 1

0

你可以使用

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

如果 whenresult是 a Failureresult.get()将抛出被包装的异常。如果 whenresult是 a Success,它将成功。

尽管此解决方案不包含显式断言,但它会隐含地使result是 a的情况失败Failure

如果您希望断言失败而不是测试失败并出现异常,您还可以使用:

@Test
public void testFoo() {
    final Try<Foo> result = createMyFooInstance();
    assertThatCode(result::get).doesNotThrowAnyException();
}
于 2019-03-18T11:59:46.680 回答