Junit的各個測試執行順序的除錯簡析

2022-10-11 04:06:11 字數 1229 閱讀 5926

在完成軟體構造課程的lab1時,其中有一部分時需要讓我們為乙個類friendshipgraph編寫測試,這個類大概有以下三個功能(方法):

將一些頂點加入有向圖

講對應的邊加入有向圖

計算有向圖兩點之間的距離

那麼明顯這個測試類的對應的測試1,2,3的方法是有先後順序的。當時我覺得junit的測試應該本身是按順序執行的,但是執行後發現了錯誤如圖:

這裡我們明顯看到加點的方法對了,但是加邊的方法卻有錯誤,提示資訊提醒加入邊對應的點還未被加入點集中。因此加邊的方法執行在了加點的方法前。

經過查詢junit在發現預設情況下,將使用確定性但有意不明顯的演算法對測試方法進行排序。 這確保了測試套件的後續執行以相同的順序執行測試方法,從而允許可重複的構建。

意思是junit的方法執行順序預設是不確定的,但是一旦執行就不會改變。

但是官方為我們提供了修改執行順序的方法,可以使用在類前面加

@fixmethodorder(methodsorters.name_ascending)//讓test按照字典序執行

public class friendshipgraphtest

@org.junit.test

public void b_addedge() throws friendshipgraph.samenameexception {}

@org.junit.test

public void c_getdistance() throws friendshipgraph.samenameexception {}

}

之後執行得到的結果就符合了我們的預期。

同時還有以下幾種方法可以選用

@fixmethodorder(methodsorters.jvm)

從上到下 執行@test

@fixmethodorder(methodsorters.name_ascending)

按方法名字順序執行@test

@fixmethodorder(methodsorters.default)

預設方法,不可預期

Junit 測試執行順序

junit 單元測試中設定測試執行順序 junit中 的測試中,有些資料有依賴性,比如 註冊使用者後,才能執行編輯 操作之類的,所以需要測試用例 按照一定順序執行。乙個簡單的例項,見如下 引入了 testsuite,import junit.framework.test import junit.f...

TestNG測試執行順序

1.preserve order屬性,之前一直認為preserve order屬性是控制配置方法的執行順序的,其實不是,preserve order主要是控制test下節點classes執行順序的 例如 1.0 encoding utf 8 framework testng test preserv...

測試執行分層

測試執行分層 v模型體現了測試設計分層和測試執行分層的概念,本文以作者自身的理解談談測試執行分層,不過從實際專案運作情況來看,真正做到測試執行分層的並不多,這裡原因有很多種,暫且不論。1.ut 單元測試的物件是lld中所劃分定義的程式單元或模組,它也是單元測試用例設計中可測試的最大單元。該測試物件可...