Junit assertEquals игнорировать регистр - программирование
Подтвердить что ты не робот

Junit assertEquals игнорировать регистр

im просто перемещается из С# → java. Мне нужно написать несколько тестов с помощью junit. В моем тесте мне нужно сравнить две строки, чтобы увидеть, соответствуют ли они. Таким образом, у нас также есть Assert.assertEquals, но это чувствительно к регистру. Как я могу сделать регистр нечувствительным к регистру? Мне нужно:

"blabla".equals("BlabLA")

чтобы вернуть true.

Итак, в С# мы имели обыкновение иметь:

public static void AreEqual (
    string expected,
    string actual,
    bool ignoreCase,
    string message
)

Я быстро перешел к документам Junit, но я не могу найти ничего подобного.

4b9b3361

Ответ 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: