assertj + как определить, какое свойство не работает при использовании кортежа

Я использую кортеж assertj, чтобы объединить два или три свойства вместе и проверить комбинацию. Теперь у меня возникла проблема определить, из-за какого свойства он выходит из строя.

В настоящее время я использую, как показано ниже:

softAssertions.assertThat(resultArrayList)
                              .extracting("title", "address.countryName", "address.state", "address.city")
                              .as("Title, CountryName, State, City at position %s", i)
                              .containsAnyOf(
                                      new Tuple(placeToSearch, expectedCountry, expectedState, expectedCity));

и я получаю сообщение об ошибке как

[Title, CountryName, State, City at position 0]        
Expecting
      <[("DOT Baires Shopping", "Argentina", "Ciudad Autónoma de Buenos Aires", "Ciudad de Buenos Aires")]>
    to contain at least one of the following elements:
      <[("Dot", "Argentina", "Ciudad Autónoma de Buenos Aires", "Ciudad de Buenos Aires")]>

1) Некоторые предложения по выявлению / маркировке данных с ошибкой. 2) Любым способом раскрасить неудачные


person Rejish R    schedule 15.02.2019    source источник


Ответы (1)


В вашем случае у вас есть список из одного кортежа, этот кортеж не соответствует ожидаемому кортежу, поскольку их первое значение отличается ("Dot" vs "DOT Baires Shopping"). Метод Tuple equals сравнивает все значения кортежа.

Должна быть возможность раскрашивать фактический и ожидаемый список, но не конкретные элементы (это вещь IDE, а не AssertJ).

Несколько замечаний:

  • использование containsAnyOf(expected) с одним элементом аналогично использованию contains(expected)
  • Assertions выставить tuple(...) фабричный метод, чтобы не вызывать new Tuple(...)

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

person Joel Costigliola    schedule 15.02.2019
comment
да, в приведенном выше примере первое значение отличается, и я хочу узнать, есть ли способ изменить сообщение, чтобы указать это, поскольку в текущем стиле сообщения неясно, какой из них был изменен. - person Rejish R; 17.02.2019