更新時間:2022-09-26 10:27:06 來源:動力節(jié)點 瀏覽2066次
在某些情況下,我們需要斷言給定的字符串是否為空。在 Java 中有很多方法可以做這樣的斷言。
讓我們在這個快速教程中探索一些測試斷言技術(shù)。
我們需要先獲取一些依賴項。在 Maven 項目中,我們可以在pom.xml中添加以下依賴項:
JUnit:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
Hamcrest 核心:
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
</dependency>
Apache Commons 朗:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
AssertJ:
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.11.1</version>
</dependency>
Google Guava:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
我們將使用String類中的isEmpty方法和JUnit 中的Assert類來驗證給定的String是否為空。由于isEmpty 方法在輸入String為空時返回 true,我們可以將它與 assertFalse方法一起使用:
assertFalse(text.isEmpty());
或者,我們也可以使用:
assertTrue(!text.isEmpty());
考慮到 text可能為空,另一種方法是使用assertNotEquals方法進行相等性檢查:
assertNotEquals("", text);
或者:
assertNotSame("", text);
Hamcrest 是一個著名的框架,它提供了在 Java 生態(tài)系統(tǒng)中常用于單元測試的匹配器。
我們可以使用 Hamcrest CoreMatchers 類進行空字符串檢查:
assertThat(text, CoreMatchers.not(isEmptyString()));
isEmptyString方法在IsEmptyString類中可用。
這也會在失敗時返回 AssertionError,但輸出更有用:
java.lang.AssertionError:
Expected: not an empty string
but: was ""
如果需要,要驗證 String 既不為空也不為 null,我們可以使用isEmptyOrNullString:
assertThat(text, CoreMatchers.not(isEmptyOrNullString()));
要了解CoreMatchers類的其他方法,請閱讀這篇之前發(fā)表的文章。
Apache Commons Lang庫為java.lang API提供了許多幫助實用程序。
StringUtils類提供了一種我們可以用來檢查空字符串的方法:
assertTrue(StringUtils.isNotBlank(text));
失敗時,這將返回一個簡單的AssertionError。
AssertJ 是一個開源的、社區(qū)驅(qū)動的庫,用于在 Java 測試中編寫流暢和豐富的斷言。
AbstractCharSequenceAssert.isNotEmpty()方法 驗證實際的CharSequence不為空,或者換句話說,它不為 null 并且長度為 1 或更多:
Assertions.assertThat(text).isNotEmpty()
失敗時,將打印輸出:
java.lang.AssertionError:
Expecting actual not to be empty
Guava是 Google 提供的一組核心庫。
Guava Strings類中的isNullOrEmpty方法 可用于驗證 String 是否為空(或 null):
assertFalse(Strings.isNullOrEmpty(text));
當(dāng)沒有其他輸出消息失敗時,這也會返回AssertionError 。
初級 202925
初級 203221
初級 202629
初級 203743