簡體   English   中英

如何斷言字符串不為空

[英]How to assertThat String is not empty

可以通過以下方式斷言 junit 中的string不為空:

 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())));

更新- 請注意:“Maven 中心有一些額外的工件,稱為 java-hamcrest 和 hamcrest-java,版本為 2.0.0.0。請不要使用這些,因為它們是重新打包不同 jar 的失敗努力。” 來源:hamcrest.org/JavaHamcrest/distributables

您可以使用 JUnit 自己的assertNotEquals斷言:

Assert.assertNotEquals( "", string );

您還可以使用名為AssertJ 的庫,它為您的代碼提供流暢的斷言。 檢查可以用優雅的方式完成:

assertThat(myString).isNotEmpty();

我會使用assertThat(string, is(not(equalTo("")))) 與涉及檢查字符串的.length().isEmpty()方法結果的其他方法不同,這將在測試失敗時在錯誤消息中顯示字符串的內容。

編輯:實際上,不,我不會。我會使用如emptyString() -java 的回答中所述的emptyString()isEmptyString()匹配器。贊成那個,而不是這個。)

考慮使用 Apache 的StringUtils.isNotEmpty()方法,這是對空字符串的空安全檢查。

assertTrue(StringUtils.isNotEmpty(str));

如果您已經在使用commons-lang3,您可以這樣做,它還會檢查空值和空格:

assertTrue(StringUtils.isNotBlank(string));

如他們的 javadoc 中所述:

isNotBlank :檢查 CharSequence 是否不為空(“”)、不為空且不為空白。

編寫您自己的 TestHelper 類,您可以在其中收集斷言的自定義方法,例如

 public static void assertEmpty(String input) {...}

您可以使用谷歌番石榴庫方法Strings.isNullOrEmpty

來自 JavaDoc

public static boolean isNullOrEmpty(@Nullable String string)

如果給定的字符串為 null 或為空字符串,則返回 true。

考慮使用 nullToEmpty(java.lang.String) 規范化您的字符串引用。 如果這樣做,您可以使用 String.isEmpty() 代替此方法,並且您也不需要像 String.toUpperCase(java.util.Locale) 這樣的特殊空安全形式的方法。 或者,如果您想“在另一個方向”規范化,將空字符串轉換為 null,您可以使用 emptyToNull(java.lang.String)。

參數

string - 要檢查的字符串引用

回報

如果字符串為 null 或為空字符串,則為 true

您要斷言的是字符串的大小。

assertThat("String is empty",
       string.length(),
       greaterThan(0));

無腿甲:

    assertFalse(StringUtils.isEmpty(string));

如果您使用的是 JUnit5,那么您可以使用assertNotNull("yourString"); 斷言您的 String 是否不為空或 null 。

或者,如果您需要一條消息,那么您可以使用

assertNotNull("your String", "String is empty");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM