JUnit 4 8 原始碼解讀2

2021-07-14 09:18:13 字數 1924 閱讀 1616

在junit 4.x的原始碼中,增加了org.junit這個大的package,入口也由junit.textui.testrunner換成了org.junit.runner.junitcore。

1.在入口方法中,新建了乙個junitcore,呼叫了runmain方法。

public

static

void

main(string... args)

runmain方法先輸出了junit當前版本,接著呼叫junitcommandlineparseresult 分析命令引數,增加***,最後執行測試用例。

result runmain(junitsystem system, string... args)
parse方法會獲取filter和類名。

public

static junitcommandlineparseresult parse(string args)

private

void

parseargs(string args)

void parseparameters(string args) catch (classnotfoundexception e)

}}

textlistener用來輸出最後的測試結果,如果有fail的測試,則列印出stack trace.

computer類用來計算runners和suites。

return run(junitcommandlineparseresult.createrequest(defaultcomputer()));

static computer defaultcomputer()

request類用來描述帶有test case的結構,以便支援test case的排序和過濾。createrequest方法通過computer來計算classes,並根據filter過濾掉不需要的test case。

public request createrequest(computer computer)  else 

}

alldefaultpossibilitiesbuilder類包含了junit3,junit4,ignore等其他型別的test 。

public

static request classes(computer

computer, class

<?>... classes) catch (initializationerror e)

}

public runner getsuite(final runnerbuilder builder,

class<?> classes) throws initializationerror

}, classes);

}

使用builder建立suite

public

suite(runnerbuilder builder, class<?> classes) throws initializationerror

在alldefaultpossibilitiesbuilder的runnerforclass方法中,預定義了5中已有的builder型別,使用每種builder來對class建立runner,builder有先後順序。

public runner runnerforclass(class<?> testclass) throws throwable 

}return

null;

}

request, description, runner, suite,computer,runnerbuilder

JUnit原始碼解讀

junit 是由 erich gamma 和 kent beck 編寫的乙個開源的單元測試框架。它屬於白盒測試,只要將待測類繼承 testcase 類,就可以利用 junit 的一系列機制進行便捷的自動測試了。junit 的設計精簡,易學易用,但是功能卻非常強大,這歸因於它內部完善的 結構。eric...

CYYMysql 原始碼解讀 2

執行緒同步類 lock.h檔案和lock.cpp檔案實現比較簡單,使用的是臨界區,臨界區是使用者態的執行緒間切換消耗不是很大,而事件核心物件 訊號量 互斥量都是核心態的,呼叫的時候會切換到核心態,所以盡量使用臨界區來同步執行緒間操作。詳細資訊可以檢視windows核心程式設計,上面講解的很詳細。pr...

JUnit原始碼分析

junit junit原始碼學習和經驗分享。源 裡沒有密碼,好多開源框架都出自大牛大師之手,是學習的好例子,可惜自己沒啥耐心去看,網上搜尋到牛人解析,記錄下來,學習學習。深入junit原始碼之runner 深入junit原始碼之statement 深入junit原始碼之rule 深入junit原始碼...