Я пытаюсь сравнить две строки, используя assertEquals (s1, s2); Я получаю ошибку сравнения <> нуль, ожидаемый в нем. Помогите мне в этом.?Что такое ошибка сравнения, нуль в JUnit?
ответ
(. Вы не можете сказать, какая версия JUnit вы используете, и это может иметь значение ... хотя, вероятно, не)
Это означает, что unit test имеет выражение, которое вычисляется как null
как аргумент expected
assertEquals
, а аргумент actual
не оценивается до null
.
Невозможно сказать, что это на самом деле означает, не глядя на ваш код, но это может быть ошибкой в модульном тесте (например, аргументы неправильным образом) или ошибка в тестируемом коде. . или оба. Что касается , почему вы получаете null
, это зависит от модульных тестов и/или от кода, который он тестирует. Вам нужно будет провести собственное расследование, посмотрев исходный код, используя отладчик и т. Д.
Обратите внимание, что метод assertEquals
(смотри ниже) сравнивает объекты с использованием equals
(не ==
) и заботится, чтобы избежать бросать NPE это один или оба аргумента null
. Таким образом, люди, которые предлагают, чтобы вы тестировали null
, сначала не указали точку.
Вот Junit 4,4 код:
static public void assertEquals(String message, Object expected, Object actual) {
if (expected == null && actual == null)
return;
if (expected != null && isEquals(expected, actual))
return;
else if (expected instanceof String && actual instanceof String) {
String cleanMessage= message == null ? "" : message;
throw new ComparisonFailure(cleanMessage, (String)expected,
(String)actual);
}
else
failNotEquals(message, expected, actual);
}
}
private static boolean isEquals(Object expected, Object actual) {
return expected.equals(actual);
}
Как вы можете видеть, null
случаи рассматриваются ...
JUnit вызывает метод .equals() для определения равенства в методе assertEquals (Object o1, Object o2). Таким образом, вы определенно безопасны с использованием assertEquals (string1, string2). (Потому что строки являются объектами), если оба объекта не равны нулю. Другой способ оценки его использует assertTrue:
assertTrue(s1.equals(s2));
На самом деле рекомендуется использовать assertEquals вместо assertTrue для проверки равенства двух объектов в качестве сообщения, когда утверждение терпит неудачу, легче интерпретировать. –
Это утверждение также вызывает сомнения: * «assertEquals проверяет равенство объектов. Не рекомендуется сравнивать строку с равенством» *. Фактически, 'assertEquals' использует' Object.equals' ... и это ** правильный путь ** для сравнения строк. (Он НЕ использует '==' ... читать код и javadocs.). И если вы действительно говорите о правильном способе использования 'assertTrue': 1), это не очевидно, 2)' assertTrue' - это красная селедка, потому что он ее не использует, а 3) это плохая идея; см. комментарий Пангеи. –
- 1. Что такое правило сравнения строк в MySQL?
- 2. Что такое комбинированный оператор сравнения в Ruby?
- 3. Что такое JUnit @Before и @Test
- 4. Что такое алгоритм сравнения строк VBA?
- 5. Что такое «стандартный порядок сравнения строк» Perl?
- 6. Что такое оператор сравнения для ссылок?
- 7. Что такое эффективный способ сравнения объектов StringBuilder
- 8. Что такое элегантное решение условного сравнения?
- 9. Что такое класс сравнения <T>?
- 10. Что такое инструкция cmp для сравнения точно?
- 11. сравнения строк и включая нуль
- 12. Что такое нуль или «пустой» счетный диапазон в Swift?
- 13. Что такое ошибка Combobox_SelectedIndexChanged?
- 14. Что такое ошибка домена
- 15. Что такое ошибка ajax?
- 16. Что такое ошибка (NSError **)?
- 17. Что такое ошибка INSTALL_PARSE_FAILED_NO_CERTIFICATES?
- 18. Что такое ошибка R6010?
- 19. Что такое полосатая ошибка?
- 20. Что такое ошибка в проблом?
- 21. Что такое ошибка в sql?
- 22. Что такое ошибка разыменования?
- 23. Что такое ошибка NSXMLParserErrorDomain?
- 24. Что такое ошибка dwarfdump?
- 25. Что такое ошибка шины?
- 26. Что такое ошибка 3004?
- 27. Что такое значение 2 в 2>/DEV/нуль
- 28. Что такое шаг сборки для Junit в работе Jenkins?
- 29. Ошибка сравнения сравнения
- 30. Ошибка Maven Resources в JUnit
где код? –
Используйте отладчик, чтобы обе строки были не пустыми. Или распечатайте значения перед их тестированием. – Marvo
Возможно ли, что вы используете символы Юникода, например [здесь] (http://stackoverflow.com/questions/4237581/comparing-unicode-characters-in-junit)? –