string
がjunitで空でないことをアサートするには、次の方法があります。
assertTrue(!string.isEmpty());
assertFalse(string.isEmpty());
assertThat(string.toCharArray(), is(not(emptyArray())); // (although this didn't compile)
私の質問は:これをチェックするより良い方法があります-次のようなもの:
assertThat(string, is(not(empty()))
?
Hamcrest 1.3では、 Matchers#isEmptyString を使用できます。
assertThat(string, not(isEmptyString()));
Hamcrest 2.0では、 Matchers#emptyString を使用できます。
assertThat(string, is(not(emptyString())));
UPDATE-「Maven Centralには、バージョン2.0.0.0のJava-hamcrestおよびhamcrest-Javaという追加のアーティファクトがあります。これらを使用しないでください。異なるjarを再パッケージ化する作業が中断されているためです。」ソース:hamcrest.org/JavaHamcrest/distributables
JUnit独自のassertNotEquals
アサーションを使用できます。
Assert.assertNotEquals( "", string );
assertThat(string, is(not(equalTo(""))))
を使用します。文字列の.length()
または.isEmpty()
メソッドの結果をチェックすることを含む他のアプローチとは異なり、これはテストが失敗したときにエラーメッセージで文字列の内容を表示します。
(編集:実際、いいえ、そうしません。で説明されているように、emptyString()
またはisEmptyString()
マッチャーを使用します holi-Java's answer 。これに投票してください。これではありません。)
Apacheの StringUtils.isNotEmpty() メソッドの使用を検討してください。これは、空の文字列に対するnullセーフチェックです。
assertTrue(StringUtils.isNotEmpty(str));
すでに commons-lang を使用している場合は、これを行うことができます。これにより、nullと空白もチェックされます。
assertTrue(StringUtils.isNotBlank(string));
Javadocsで説明されているように:
isNotBlank:CharSequenceが空( "")ではなく、nullではなく、空白だけではないかどうかを確認します。
アサーション用のカスタムメソッドを収集できる独自のTestHelperクラスを作成します。
public static void assertEmpty(String input) {...}
また、 AssertJ というライブラリを使用して、コードに流codeなアサーションを提供することもできます。エレガントでチェックすることができます:
assertThat(myString).isNotEmpty();
Google GuavaLibraryメソッドを使用できます Strings.isNullOrEmpty
JavaDocから
public static boolean isNullOrEmpty(@Nullable String string)
指定された文字列がnullまたは空の文字列の場合、trueを返します。
NullToEmpty(Java.lang.String)で文字列参照を正規化することを検討してください。その場合、このメソッドの代わりにString.isEmpty()を使用できます。また、String.toUpperCase(Java.util.Locale)のような特別なnullセーフなメソッドも必要ありません。または、「他の方向で」空の文字列をnullに変換して正規化する場合は、emptyToNull(Java.lang.String)を使用できます。
パラメータ:
string-チェックする文字列参照
戻り値:
文字列がnullまたは空の文字列である場合はtrue
アサートするのは、文字列のサイズです。
assertThat("String is empty",
string.length(),
greaterThan(0));