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

2022-07-03 10:03:13 字數 1417 閱讀 4481

一般實踐認為,自動化測試應能夠獨立執行且無特定順序,並且測試結果不應依賴於先前測試的結果。 但是在某些情況下,可以證明特定的測試執行順序是正確的,尤其是在整合或端到端測試中。

預設情況下,在junit 5中,測試方法的執行在構建之間是可重複的,因此具有確定性,但是該演算法是故意不明顯的(作為庫狀態的作者)。 幸運的是,可以使用內建方法定購器或通過建立自定義定購器來調整執行順序以滿足我們的需求。

org.junit.jupiter.api.testmethodorder

為了更改測試執行順序,我們需要使用org.junit.jupiter.api.testmethodorder注釋測試類,並將方法排序器的型別作為引數傳遞。 從junit 5.4開始,有三個內建的方法排序器: orderannotation , alphanumeric和random 。 通過實現org.junit.jupiter.api.methodorderer介面,我們還可以輕鬆建立自己的自定義方法org.junit.jupiter.api.methodorderer器。

import org.junit.jupiter.api.methodorderer;  

import org.junit.jupiter.api.order;

import org.junit.jupiter.api.test;

import org.junit.jupiter.api.testmethodorder;

@testmethodorder(methodorderer.orderannotation. class )

class testexecutionorderwithorderannotation

@order ( 2 )

@test

void btest() {}

@order ( 3 )

@test

void ctest() {}

}

@testmethodorder (methodorderer.alphanumeric. class )  

class alphanumerictestexecutionorder

@test

void btest() {}

@test

void ctest() {}

}

@testmethodorder (methodorderer.random. class )  

class alphanumerictestexecutionorder

@test

void btest() {}

@test

void ctest() {}

}

內容參考:

單元測試之JUnit5入門

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

單元測試之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 表示方...