簡體   English   中英

Java JUnit 5注釋的差異

[英]Java JUnit 5 annotations differences

我看到根據JUnit 5用戶指南介紹了新的JUnit Jupiter。

JUnit 5 = JUnit平台+ JUnit Jupiter + JUnit Vintage

我對在庫中使用的同名注釋感到困惑。 這兩個之間有什么顯着差異嗎?

  • org.junit.Test
  • org.junit.jupiter.api.Test

上面鏈接頁面中的描述解釋了注釋org.junit.jupiter.api.Test ,如下所示:

表示方法是一種測試方法。 與JUnit 4的@Test注釋不同,此注釋不會聲明任何屬性,因為JUnit Jupiter中的測試擴展基於它們自己的專用注釋進行操作。 除非被覆蓋,否則這些方法是繼承的。

據我所知,主要區別在於新的注釋屬性被替換為專用注釋和方法(例如assertTimeout(...) ),而不像舊的@Test(timeout = 1000)

文檔說明了來自JUnit 4的舊注釋org.junit.Test ,但是,沒有清楚地解釋JUnit 5版本中相同注釋的目的,這對於我的意外沒有標記為@Deprecated - 它意味着那里仍然是在JUnit 5中使用此注釋的目的,我是對的嗎?

我的問題是在JUnit 5中org.junit.Test的目的是什么,為什么它沒有被棄用,我的選擇應該基於上面提到的兩個注釋。

org.junit.Test 不在 JUnit5中,該類由您對JUnit Vintage的依賴提供。

JUnit Vintage包含JUnit Vintage測試引擎和org.junit.Test等類,這允許您在JUnit5測試的同時運行JUnit4測試。 這是一個后面的兼容性措施。

如果你希望使用JUnit5結構(離開JUnit4你的項目),那么剛落,JUnit的復古的依賴,專注於org.junit.jupiter.api.Test

如果你需要並行運行JUnit4和JUnit5測試(可能是在migraiton / cut-over期間),那么保留對​​JUnit Vintage的依賴,但是使用org.junit.jupiter.api.Test編寫所有新的測試用例。

更新 :回應此...

我仍然不明白為什么org.junit.Test不被棄用。

它在JUnit Jupiter中根本不存在(所以棄用是沒有實際意義的)並且它在JUnit Vintage中不被棄用,因為它是JUnit Vintage的核心元素。 但是,我想我可以看到你來自哪里; 你升級到JUnit5並且 - 令人困惑 - org.junit.Test在沒有@Deprecated的類路徑上仍然可用,因此沒有明確指示它的' 不使用 '狀態。 也許您應該考慮在運行JUnit5時是否需要/需要任何JUnit4構造。 如果你不需要它,那么就不要包含對JUnit Vintage的依賴,它就像org.junit.Test從未存在過。

暫無
暫無

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

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