Как утверждать, что строка не пуста

Утверждение, что 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-, которая делает проверку нуля и проверяет длину данной строки.