單元測試之JUnit5入門

2021-09-11 04:29:25 字數 2017 閱讀 1695

與以前版本的junit不同,junit 5由三個不同子專案中的幾個不同模組組成。

junit 5 = junit platform + junit jupiter + junit vintage

org.junit.jupiter

junit-jupiter-api

5.0.3

test

junit

junit

4.12

test

junit hello world
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()

}

單元測試之JUnit5入門

與以前版本的junit不同,junit 5由三個不同子專案中的幾個不同模組組成。junit 5 junit platform junit jupiter junit vintage org.junit.jupitergroupid junit jupiter apiartifactid 5.0.3v...

Junit5單元測試的常用註解

junit5的註解與junit4的註解有所變化 test 表示方法是測試方法。但是與junit4的 test不同,他的職責非常單一不能宣告任何屬性,拓展的測試將會由jupiter提供額外測試 parameterizedtest 表示方法是引數化測試,下方會有詳細介紹 repeatedtest 表示方...

JUnit 5單元測試保證執行順序

一般實踐認為,自動化測試應能夠獨立執行且無特定順序,並且測試結果不應依賴於先前測試的結果。但是在某些情況下,可以證明特定的測試執行順序是正確的,尤其是在整合或端到端測試中。預設情況下,在junit 5中,測試方法的執行在構建之間是可重複的,因此具有確定性,但是該演算法是故意不明顯的 作為庫狀態的作者...