簡體   English   中英

當JUnit 5沒有assertThat()函數時,如何將Hamcrest與JUnit 5一起使用?

[英]How do I use Hamcrest with JUnit 5 when JUnit 5 doesn't have an assertThat() function?

要將Hamcrest與JUnit 4一起使用,我們使用assertThat()函數。 但是,JUnit 5不再具有assertThat()函數。 如何在沒有assertThat()情況下使用Hamcrest?

您必須確保Hamcrest包含在類路徑中,然后使用Hamcrest提供的assertThat()函數。 從當前的JUnit 5用戶指南 - 編寫測試斷言

JUnit Jupiter的org.junit.jupiter.Assertions類不提供類似於JUnit 4的org.junit.Assert類中的assertThat()方法,該類接受Hamcrest Matcher。 相反,鼓勵開發人員使用第三方斷言庫提供的對匹配器的內置支持。

以下示例演示如何在JUnit Jupiter測試中使用Hamcrest的assertThat()支持。 只要將Hamcrest庫添加到類路徑中,就可以靜態導入assertThat(),is()和equalTo()等方法,然后在下面的assertWithHamcrestMatcher()方法中使用它們。

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.jupiter.api.Test;

class HamcrestAssertionDemo {

    @Test
    void assertWithHamcrestMatcher() {
        assertThat(2 + 1, is(equalTo(3)));
    }

}

當然,基於JUnit 4編程模型的遺留測試可以繼續使用org.junit.Assert#assertThat。“

請參閱https://github.com/junit-team/junit5/issues/147

您可以在JUnit5中同時使用Hamcrest和AssertJ。 兩個框架都有一個簡單的assertThat方法,您可以根據需要導入和使用它。

目前,我們不打算在我們自己的斷言中支持這些框架以避免依賴。 不過,人們可以很好地使用它們。

暫無
暫無

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

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