與以前版本的junit不同,junit 5由三個不同子專案中的幾個不同模組組成。
junit 5 = junit platform + junit jupiter + junit vintage
>
>
org.junit.jupitergroupid
>
>
junit-jupiter-apiartifactid
>
>
5.0.3version
>
>
testscope
>
dependency
>
>
>
junitgroupid
>
>
junitartifactid
>
>
4.12version
>
>
testscope
>
dependency
>
import
static org.junit.jupiter.api.assertions.assertequals;
import org.junit.jupiter.api.test;
class
firstjunit5tests
}
@test註解在方法上標記方法為測試方法,以便構建工具和 ide 能夠識別並執行它們。junit 5不再需要手動將測試類與測試方法為public,包可見的訪問級別就足夠了。
你可能需要執行一些**來在測試執行前後完成一些初始化或銷毀的操作。在 junit 5 中,有4個註解你可能會用於如此工作:
因為框架會為每個測試建立乙個單獨的例項,在 @beforeall/@afterall 方法執行時尚無任何測試例項誕生。因此,這兩個方法必須定義為靜態方法。
import org.junit.jupiter.api.*;
class
standardtests
@beforeeach
void
init()
@test
void
succeedingtest()
@test
void
failingtest()
@test
@disabled
("for demonstration purposes"
)void
skippedtest()
@aftereach
void
teardown()
@afterall
static
void
teardownall()
}
準備好測試例項、執行了被測類的方法以後,斷言能確保你得到了想要的結果。一般的斷言,無非是檢查乙個例項的屬性(比如,判空與判非空等),或者對兩個例項進行比較(比如,檢查兩個例項物件是否相等)等。無論哪種檢查,斷言方法都可以接受乙個字串作為最後乙個可選引數,它會在斷言失敗時提供必要的描述資訊。如果提供出錯資訊的過程比較複雜,它也可以被包裝在乙個 lambda 表示式中,這樣,只有到真正失敗的時候,訊息才會真正被構造出來。
class
assertionsdemo
@test
void
groupedassertions()
@test
void
dependentassertions()
,()-
>);
}@test
void
exceptiontesting()
);assertequals
("a message"
, exception.
getmessage()
);}@test
void
timeoutnotexceeded()
);}@test
void
timeoutnotexceededwithresult()
);assertequals
("a result"
, actualresult);}
@test
void
timeoutnotexceededwithmethod()
@test
void
timeoutexceeded()
);}@test
void
timeoutexceededwithpreemptivetermination()
);}private
static string greeting()
}
遷移指南
junit 平台可以通過 jupiter 引擎來執行 junit 5 測試,vintage 引擎來執行 junit 3 和 junit 4 測試。因此,已有的 junit 3 和 4 的測試不需要任何修改就可以直接在 junit 平台上執行。只需要確保 vintage 引擎的 jar 包出現在 classpath 中,junit 平台會自動發現並使用該引擎來執行 junit 3 和 4 測試。開發人員可以按照自己的專案安排來規劃遷移到 junit 5 的進度。可以保持已有的 junit 3 和 4 的測試用例不變,而新增加的測試用例則使用 junit 5。
在進行遷移的時候需要注意如下的變化:
junit 5 使用者指南
junit 5 系列:基礎入門
junit 5 新特性
單元測試之JUnit5入門
與以前版本的junit不同,junit 5由三個不同子專案中的幾個不同模組組成。junit 5 junit platform junit jupiter junit vintage org.junit.jupiter junit jupiter api 5.0.3 test junit junit ...
Junit5單元測試的常用註解
junit5的註解與junit4的註解有所變化 test 表示方法是測試方法。但是與junit4的 test不同,他的職責非常單一不能宣告任何屬性,拓展的測試將會由jupiter提供額外測試 parameterizedtest 表示方法是引數化測試,下方會有詳細介紹 repeatedtest 表示方...
JUnit 5單元測試保證執行順序
一般實踐認為,自動化測試應能夠獨立執行且無特定順序,並且測試結果不應依賴於先前測試的結果。但是在某些情況下,可以證明特定的測試執行順序是正確的,尤其是在整合或端到端測試中。預設情況下,在junit 5中,測試方法的執行在構建之間是可重複的,因此具有確定性,但是該演算法是故意不明顯的 作為庫狀態的作者...