Junit原始碼閱讀 一

2021-09-19 10:27:19 字數 2025 閱讀 5697

從上圖可以清楚的看出junit大致分為幾個版塊,接下來一一簡略介紹這些版塊的作用。

junitcore負責提供給使用者統一的互動,從命令列執行測試樣例。notifier是乙個虛類,子類需要實現如何通知listener的方法,負責管理listener集合,內部內建了乙個靜態的safenotifier,該類提供了乙個run方法,來簡單依次通知所有listener,它用來實現在測試開始和失敗出現的時候通知所有listener。

description是對測試樣例的建模,用來組合多個測試樣例,是runner中的核心內容。

filter也是乙個虛類,子類應該實現shouldrun方法來決定對於description是否執行。同時依然實現乙個靜態方法來提供什麼都不過濾,以及乙個判斷原子描述是否等於期望描述的過濾器,對於非原子描述若其子描述均不等於期望描述則濾掉。如下列**所示:

/**

* returns a that only runs the single method described by

* */

public static filter matchmethoddescription(final description desireddescription)

// explicitly check if any children want to run

for (description each : description.getchildren())

}return false;

}@override

public string describe() };}

failure組合了description和throwable,為執行時異常和斷言錯誤遮蔽了不一致的方面,可以向上提供錯誤資訊和樣例資訊。

request負責提供具體的runner來run對應的測試樣例,同時是filter作用的主體,對於filter,會返回乙個新的filterrequest,**如下:

junitcore使用外觀模式(facade),對外提供一致的介面,同時支援執行junit 4或junit 3.8.x用例,通過命令列執行用例.首先它使用junitcommandlineparseresult解析外部引數,將預設的textlistener加入內建的notifier。它所執行的runner也是由junitcommandlineparseresult提供的,先行通過測試filter掉不需要的樣例,最後呼叫runner的run方法。

JUnit原始碼閱讀 閱讀基礎

junit核心類 junit.framework test testcase testresult testsuitejunit.textui testrunner junit生命週期 1 初始化階段 2 執行階段 3 結果捕捉階段 3.核心類功能 1 test介面代表了測試能力,實現了test介面...

JUnit原始碼分析(一)

一 引子junit 原始碼是我仔細閱讀過的第乙個開源專案原始碼。閱讀高手寫的 能學到一些好的程式設計風格和實現思路,這是提高自己程式設計水平行之有效的方法,因此早就想看看這些赫赫有名的框架是怎麼回事了。今天就拿最簡單的 junit 下手,也算開始自己的原始碼分析之路。junit 作為最著名的單元測試...

Junit 原始碼解析(一)

junit 原始碼解析 一 之junit執行容器 package org.junit.runner public abstract class runner implements describable runner是junit的執行容器,它是各種junit執行容器的父類。我們可以把它理解成web容...