[英]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.