單元測試之JUnit5入門

2021-08-15 11:17:23 字數 2814 閱讀 6965

與以前版本的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中,測試方法的執行在構建之間是可重複的,因此具有確定性,但是該演算法是故意不明顯的 作為庫狀態的作者...