Выразите «успех» или «выбросить исключение» Vavr Try in Java unit test - PullRequest
1 голос
/ 18 марта 2019

У меня есть простой модульный тест, который утверждает на экземпляре объекта Try из библиотеки vavr.

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

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

Мой вопрос сосредоточен на формулировке утверждения теста.Семантически я хочу иметь «если foo - это успех, все хорошо, в противном случае, выбросить инкапсулированное исключение».Последнее важно, чтобы я мог видеть причину ошибки непосредственно в выводе JUnit.

Есть ли какой-нибудь удобный API, который я могу использовать, чтобы красиво сформулировать эту семантику?

1 Ответ

0 голосов
/ 18 марта 2019

Вы можете использовать

@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();
}
...