AssertJ JUnitSoftAssertions и утверждения Guava

Я пристрастился к правилу AssertJ JUnit JUnitSoftAssertions. Это действительно удобно, вы просто добавляете его как поле тестового класса

@Rule
public JUnitSoftAssertions softy = new JUnitSoftAssertions();

и цепляешь на него несколько assertThat.

Теперь я добавил зависимость для утверждений Guava от AssertJ, но выглядит для меня, что нет правила или нет способа зарегистрировать новые утверждения в правиле JUnit. Следовательно, я должен использовать уродливый статический импорт.

Я ошибся? Если да, объясните, как использовать их в правиле JUnit (не выполняя его самостоятельно.


person JeanValjean    schedule 19.03.2018    source источник


Ответы (1)


На данный момент в assertj-guava нет поддержки мягких утверждений, но добавить это не так уж сложно, для этого нужен только класс вроде:

/**
 * A single entry point for all soft assertions, AssertJ standard assertions and MyProject custom assertions.
 */
// extending make all standard AssertJ assertions available
public class GuavaJUnitSoftAssertions extends JUnitSoftAssertions {

  public <K, V> MultimapAssert<K, V> assertThat(final Multimap<K, V> actual) {
    return proxy(MultimapAssert.class, Multimap.class, actual);
  }

  // add the other guava assertThat methods 
  // ... 
}

Рад получить за это пожертвование (сейчас я немного занят).

Надеюсь, поможет

person Joel Costigliola    schedule 20.03.2018
comment
Привет спасибо. Да, я понял, что так было в конце. В итоге я получил реализацию нравится этот. - person JeanValjean; 20.03.2018
comment
@ Джоэл, я бы хотел подсказать, как это сделать для OptionalAssert<T>! - person Matthew Simoneau; 15.01.2019
comment
Попробуйте добавить метод, подобный тому, который используется для multimap: public <T> OptionalAssert<T> assertThat(final Optional<T> actual) { return proxy(OptionalAssert.class, Optional.class, actual); } - person Joel Costigliola; 15.01.2019