在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原始碼...