Умножить условия, установленные в утверждениях AssertJ?

Я пытаюсь установить условия умножения на assertJ и не могу найти в нем examplesGit.

Я сейчас пишу:

    assertThat(A.getPhone())
            .isEqualTo(B.getPhone());
    assertThat(A.getServiceBundle().getId())
            .isEqualTo(B.getServiceBundle().getId());

Но хочется иметь что-то вроде:

            assertThat(A.getPhone())
            .isEqualTo(B.getPhone())
            .And
            (A.getServiceBundle().getId())
            .isEqualTo(B.getServiceBundle().getId());

Как будто я использую цепочку, это не сработает, потому что мне нужны данные разницы (идентификатор, а не телефон). есть ли возможность смешать все это в одну команду assertJ? Не похоже, что для этого может быть какая-то возможность (с точки зрения алгоритма), но может быть какая-то другая идея для операторов && on?

Спасибо


person a.k    schedule 20.11.2017    source источник


Ответы (2)


Вы можете использовать мягкие утверждения с AssertJ, чтобы объединить несколько утверждений и оценить их за один раз. Мягкие утверждения позволяют комбинировать несколько утверждений, а затем оценивать их за одну операцию. Это немного похоже на транзакционное утверждение. Вы настраиваете пакет утверждений, а затем фиксируете его.

SoftAssertions phoneBundle = new SoftAssertions();
phoneBundle.assertThat("a").as("Phone 1").isEqualTo("a");
phoneBundle.assertThat("b").as("Service bundle").endsWith("c");
phoneBundle.assertAll();

Это немного многословно, но это альтернатива "&&" вашим утверждениям. Отчет об ошибках на самом деле довольно подробный, так что он указывает на частичные утверждения, которые терпят неудачу. Таким образом, приведенный выше пример напечатает:

org.assertj.core.api.SoftAssertionError: 
The following assertion failed:
1) [Service bundle] 
Expecting:
 <"b">
to end with:
 <"c">

На самом деле это лучше, чем вариант «&&» из-за подробных сообщений об ошибках.

person gil.fernandes    schedule 20.11.2017

Предложение gil.fernandes получило мой голос, вы также можете написать условие по А.

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

person Joel Costigliola    schedule 21.11.2017