Как утверждать, что строка не пуста
Утверждение, что a string
не пусто в junit, может быть выполнено следующими способами:
assertTrue(!string.isEmpty());
assertFalse(string.isEmpty());
assertThat(string.toCharArray(), is(not(emptyArray())); // (although this didn't compile)
Мой вопрос: есть ли лучший способ проверить это: что-то вроде:
assertThat(string, is(not(empty()))
?
Ответы
Ответ 1
В Hamcrest 1.3 вы можете использовать Matchers # isEmptyString :
assertThat(string, not(isEmptyString()));
В Hamcrest 2.0 вы можете использовать Matchers # emptyString :
assertThat(string, is(not(emptyString())));
ОБНОВЛЕНИЕ - Обратите внимание: "Maven central имеет некоторые дополнительные артефакты, называемые java-hamcrest и hamcrest-java, с версией 2.0.0.0. Пожалуйста, не используйте их, так как они являются прерванной попыткой переупаковки разные банки. " источник: hamcrest.org/JavaHamcrest/distributables
Ответ 2
Вы можете использовать собственное утверждение assertNotEquals
JUnit:
Assert.assertNotEquals( "", string );
Ответ 3
Я бы использовал assertThat(string, is(not(equalTo(""))))
. В отличие от других подходов, которые включают проверку результатов методов строки .length()
или .isEmpty()
, это покажет вам содержимое строки в сообщении об ошибке, когда тест завершится с ошибкой.
( Изменить: На самом деле, нет, я бы этого не сделал. Я использовал совпадение emptyString()
или isEmptyString()
, как описано в holi- java answer. Напомните, что один, а не этот.)
Ответ 4
Попробуйте использовать метод Apache StringUtils.isNotEmpty(), который является нулевой проверкой пустой строки.
assertTrue(StringUtils.isNotEmpty(str));
Ответ 5
Вы также можете использовать библиотеку AssertJ, которая обеспечивает быстрые и быстрые утверждения в вашем коде. Проверка может быть выполнена с элегантным:
assertThat(myString).isNotEmpty();
Ответ 6
Если вы уже используете commons-lang3, вы можете сделать это, что также проверяет наличие нулевых и пробельных символов:
assertTrue(StringUtils.isNotBlank(string));
Как описано в их javadocs:
isNotBlank: проверяет, является ли CharSequence не пустым (""), не нулевым и не только пробелом.
Ответ 7
Напишите свой собственный класс TestHelper, где вы можете собирать собственные методы для утверждений, например.
public static void assertEmpty(String input) {...}
Ответ 8
Вы можете использовать библиотеку Google Guava Library method Strings.isNullOrEmpty
Из JavaDoc
public static boolean isNullOrEmpty(@Nullable String string)
Возвращает true, если заданная строка равна нулю или является пустой строкой.
Попробуйте нормализовать ссылки на строки с помощью nullToEmpty (java.lang.String). Если вы это сделаете, вы можете использовать String.isEmpty() вместо этого метода, и вам не понадобятся специальные нулевые безопасные формы методов, такие как String.toUpperCase(java.util.Locale) либо. Или, если вы хотите нормализуйте "в другом направлении", преобразовав пустые строки в ноль, Вы можете использовать emptyToNull (java.lang.String).
Parameters:
строка - ссылка на строку для проверки
Returns:
true, если строка пуста или является пустой строкой
Ответ 9
То, что вы хотите утверждать, - это размер вашей строки.
assertThat("String is empty",
string.length(),
greaterThan(0));
Ответ 10
Если вы используете spring, вы можете использовать функцию StringUtils.hasLength(String str)
-from org.springframework.util package-, которая делает проверку нуля и проверяет длину данной строки.