Как утверждать фактическое значение против 2 или более ожидаемых значений? - PullRequest
22 голосов
/ 17 мая 2011

Я тестирую метод, чтобы увидеть, возвращает ли он правильную строку.Эта строка состоит из множества строк, порядок которых может измениться, что обычно дает 2 возможных комбинации.Этот порядок не важен для моего приложения.

Однако, поскольку порядок строк может измениться, написание только оператора Assert не сработает, поскольку иногда оно проходит тест, а иногда не проходит тест.

Итак, можно ли написать тест, который будет утверждать фактическое строковое значение для двух или более ожидаемых строковых значений и проверять, равно ли оно любому из них?

Ответы [ 13 ]

0 голосов
/ 03 августа 2018

Это старый пост, но я хотел получить простой ответ без добавления дополнительных библиотек. :)

Так я и сделал:

String e
e = "ear"
j = "jars"

assert (j == "jar" || e == "ear")

или если вы хотите, чтобы они оба были истинными

assert (j == "jar" && e == "ear")
0 голосов
/ 01 января 2015

Предполагая, что тестируемый метод возвращает массив, вы можете протестировать его с помощью arrayContainedInAnyOrder .

assertThat(result, is(arrayContainingInAnyOrder("value1", "value2", "value")))

Hamcrest. Примечание: использование оболочки is является необязательным, используется только в качестве читабельности.сахар.

0 голосов
/ 10 мая 2014

Я использую следующее:

assert expected1.equals(actual) || expected2.equals(actual);
...