使用 Hamcrest 檢查變數是否為 Null
1. 概述
當我們用 Java 編寫單元測試時,尤其是使用 JUnit 框架時,我們經常需要驗證某些變數是否null null Hamcrest 是一個流行的Matcher庫,用於創建靈活的測試,提供了一種實現此目的的便捷方法。
在本快速教學中,我們將探討如何使用 JUnit 和 Hamcrest 的Matcher檢查變數是否為null或非null 。
2.使用Hamcrest的assertThat()
要使用 Hamcrest,我們需要將依賴項新增到pom.xml中:
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
我們可以在Maven Central中查看最新版本。
Hamcrest 的assertThat()方法及其Matcher允許我們編寫靈活的斷言。接下來,讓我們看看如何使用這種方法斷言變數為空或不為null 。
Hamcrest 在org.hamcrest.core.IsNull類別中提供與null相關的匹配器方法。例如,我們可以使用靜態方法nullValue()和notNullValue()來取得用於null和非 null 檢查Matcher 。
此外,Hamcrest 組通常在org.hamcrest.Matchers類別中使用Matcher 。在Matchers類別中,也可以使用nullValue()和notNullValue()方法。他們只是呼叫IsNull類別中對應的方法。因此,我們可以從任一類別中import static方法來使用這些方法並使程式碼易於閱讀:
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
我們可以像這樣使用它們:
String theNull = null;
assertThat(theNull, nullValue());
String theNotNull = "I am a good String";
assertThat(theNotNull, notNullValue());
對於非空檢查,我們也可以組合Matcher並使用not(nullValue())作為替代方案:
assertThat(theNotNull, not(nullValue()));
值得注意的是**not()方法來自org.hamcrest.core.IsNot類,它否定匹配參數的邏輯。**
3. 使用 JUnit 的null和 Non-Null 斷言
正如我們所看到的,Hamcrest 的匹配器可以方便地執行null或非null斷言。或者, JUnit 隨附的assertNull()和assertNotNull()方法可以直接執行這些檢查:
String theNull = null;
assertNull(theNull);
String theNotNull = "I am a good String";
assertNotNull(theNotNull);
如程式碼所示,即使沒有Matcher ,JUnit 斷言方法在檢查null時仍然易於使用和讀取。
4。
在這篇簡短的文章中,我們探討了使用 JUnit 和 Hamcrest 有效地斷言null和非null變數的不同方法。
透過使用 Hamcrest 的nullValue()和notNullValue() Matcher ,我們可以在單元測試中輕鬆檢查變數是否為null或非null 。該函式庫的表達語法使我們的測試更具可讀性和可維護性。
或者,JUnit 的標準assertNull()和assertNotNull()斷言可以直接完成這項工作。
與往常一樣,範例的完整原始程式碼可在 GitHub 上取得。