今天突然很想寫junit的學習筆記,所以找回以前的文章接著寫了:
自從junit上公升到4.1版本之後,開始全面支援jdk1.5的annotation。另外也重寫了它的測試引擎,實現了測試引擎的可定製話。當時給我乙個全新的測試體驗,從來沒想過原來寫測試用例也可以這麼好玩。
先看下面的例子:
package com.amway.training.junit.runners;
import org.junit.runner.description;
import org.junit.runner.runner;
import org.junit.runner.notification.runnotifier;
/*** a demo test runner
* @author jj**/
public class demorunner extends runner
@override
public description getdescription()
@override
public void run(runnotifier notifier)
}
然後寫乙個測試:
package com.amway.training.junit;
import org.junit.runner.runwith;
import com.amway.training.junit.runners.demorunner;
@runwith(demorunner.class)
public class testdemorunner
執行這個單元測試,你會發現我們執行了demorunner的run方法。說明我們現在可以改變測試執行的行為。
看了一下,發現4.7的這部分還是和4.1的時候發生了不少變化。首先,現在多了乙個parentrunner的類,它把runner類再重新封裝了一輪,並且讓新的預設引擎類都繼承於它。
[img]
上面的這些類就是4.7的runner引擎家族。junit38classrunner旁支是為了向下相容3.8版本的測試用例。
ignoredclassrunner會在測試引擎核心探測到測試檔案的class有定義@ignore註解的時候自動呼叫,它會跳過當前測試類的執行:
package com.amway.training.junit.runners;
import org.junit.ignore;
import org.junit.test;
@ignore
public class testignoredrunner
}
上例執行後,發覺執行結果並未對testmethod1進行執行。
[img]
而對於這部分的封裝junit是通過request機制來完成的。關於request的介紹我們會在日後介紹(遙遙無期,遙遙無期。。。 :wink: )。
然後errorreportingrunner是在org.junit.internal包裡面的,一般不會直接呼叫而是由系統的核心引擎去呼叫,所以它裡面沒有注釋。我們來看看其原始碼以進行runner的進一步學習:
首先,看其直接實現runner的兩個抽象方法:
@override
public description getdescription()
@override
public void run(runnotifier notifier)
然後可以知道其核心方法應該是runcause(throwable,runnotifier)
private void runcause(throwable child, runnotifier notifier)
從字面看,可以知道這個測試引擎的主要工作就是把異常轉換為failure測試結果顯示。以下是乙個使用的例子:
核心的blockjunit4classrunner就不說了,theories會在日後說,因為這個模組是junit開發團隊用來做實驗的,裡面的東西不適宜用於生產,不過適宜拿來玩:)
今天到此為止,先開個頭,下次再說parentrunner及下面還沒介紹到的子類(因為事忙,今天要寫到這裡了)
Junit4學習(五)Junit4測試套件
一,背景 1,隨著開發規模的深入和擴大,專案或越來越大,相應的我們的測試類也會越來越多 那麼就帶來乙個問題,假如測試類很多,就需要多次執行,造成測試的成本增加 此時就可以使用junit批量執行測試類的功能,junit test suite,測試套件 每次執行測試類,只需要執行一次測試套件類就可以執行...
JUNIT4 筆記(五) 測試套
測試套包含乙個或多個需要被一起執行的測試用例或測試套。測試套需要在類名前加 runwith suite.class 表示不使用預設的測試執行器,使用指定的測試執行器,在這裡suite.class就是指定的測試執行器。並用 suite.suiteclasses指定該測試套包含的其他測試用例或測試套。i...
學習筆記 五 引用型別
引用型別的值 物件 是引用型別的乙個例項。ecmascript提供了很多原生的引用型別 例如object 以便開發人員用以實現常見的計算任務。1.object型別 1 建立object例項的兩種方法 new object 和物件字面量表示法。一般常用物件字面量標識法 一是因為 量少,二是物件字面量可...