Junit assertEquals игнорировать регистр
im просто перемещается из С# → java. Мне нужно написать несколько тестов с помощью junit.
В моем тесте мне нужно сравнить две строки, чтобы увидеть, соответствуют ли они.
Таким образом, у нас также есть Assert.assertEquals, но это чувствительно к регистру. Как я могу сделать регистр нечувствительным к регистру?
Мне нужно:
"blabla".equals("BlabLA")
чтобы вернуть true.
Итак, в С# мы имели обыкновение иметь:
public static void AreEqual (
string expected,
string actual,
bool ignoreCase,
string message
)
Я быстро перешел к документам Junit, но я не могу найти ничего подобного.
Ответы
Ответ 1
Я нахожу, что Hamcrest предоставляет больше утверждений, чем утверждает по умолчанию JUnit
. Hamcrest дает МНОГИЕ МНОГИЕ варианты и предоставляет более качественные сообщения о неудаче. Некоторые базовые матчи Hamcrest
встроены в JUnit
, а JUnit
имеет встроенный assertThat, так что это не что-то совершенно новое. См. Пакет hamcrest.core
в JUnit
API здесь. Попробуйте IsEqualIgnoringCase, который будет выглядеть следующим образом.
assertThat(myString, IsEqualIgnoringCase.equalToIgnoringCase(expected));
Со статическим импортом это будет
assertThat(myString, equalToIgnoringCase(expected));
если вы действительно хотите, чтобы вы сделали:
assertThat(myString, is(equalToIgnoringCase(expected)));
Одним из преимуществ этого является то, что отказ будет указывать, что expected someString but was someOtherString
. В отличие от expected true got false
при использовании assertTrue
.
Ответ 2
Используйте
"blabla".equalsIgnoreCase("BlabLA") use for check equality ignore case
Затем вы можете использовать
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
Ответ 3
Вы просмотрели String
JavaDoc?
"blabla".equalsIgnoreCase("BlabLA")
Ответ 4
Вы можете использовать assertTrue(s1.equalsIgnoreCase(s2))
Ответ 5
Прямой поддержки этого утверждения в JUnit
нет (предполагается, что вы используете JUnit, конечно), но вы можете использовать:
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
Возможно, стоит обернуть это в отдельный вспомогательный метод, который дает разумное сообщение об ошибке, если они не совпадают (посмотрите на документы для assertTrue
, чтобы увидеть, как это можно сделать).
Ответ 6
Как насчет:
assertEquals("blabla","BlabLA".toLowerCase());
или
assertEquals(expectedLowerCaseString,actualString.toLowerCase());
Затем вы можете увидеть разницу, если они не равны.
Ответ 7
Рассмотрим AssertJ (ранее FEST) для ваших утверждений, это был мой любимый API утверждения для тестов в течение многих лет:
assertThat("blabla").isEqualToIgnoringCase("BlabLA");
Ответ 8
Проверьте equalsIgnoreCase
на string doc: