JUnit

JUnit是用于編寫可重復(fù)測試的單元測試框架苫昌,可實(shí)現(xiàn)自動(dòng)化測試。
JUnit官方API文檔:http://junit.org/junit4/javadoc/latest/index.html

創(chuàng)建測試類

以下內(nèi)容使用Eclipse

添加JUnit library

Build Path - Add Libraries - JUnit

新建測試類

右鍵待測試類 - New - Other (Ctrl + N) - JUnit Test Case - Next - Select methods - Finished

命名規(guī)范

被測試類名為MyClass躏嚎,位于默認(rèn)source folder中的包c(diǎn)om.mydemo.util。

package com.mydemo.util;
public class MyClass {
    public static int add(int a, int b) {
        return a + b;
    }
}

新建source folder (可命名為test) 存放測試代碼菩貌,在該folder下創(chuàng)建與被測試類同名包卢佣。測試類命名為MyClassTest,方法命名為testMethodName箭阶。測試方法前需加@Test虚茶,測試方法不能帶參數(shù),且必須為public void仇参。

package com.mydemo.util;
import static org.junit.Assert.*;
import org.junit.Test;
import com.mydemo.util.MyClass;
public class MyClassTest {
    @Test
    public void testAdd() {
        assertEquals(6, MyClass.add(3, 3));
    }
}

使用測試類

運(yùn)行測試類

測試失敗

測試失敗包括failure和error兩種情況:

  • Failure是斷言內(nèi)容不匹配嘹叫,如
    assertEquals(5, MyClass.add(3, 3));
  • Error是程序存在Error或未處理的Exception,如
    assertEquals(6, MyClass.add(3, a));
    assertEquals(6, MyClass.divide(3, 0));

失敗時(shí)诈乒,JUnit測試工具顯示紅色條罩扇,F(xiàn)ailure Trace顯示原因和位置。

注解Annotation

@Test

將普通方法注釋為測試方法怕磨,方法內(nèi)部使用斷言喂饥,斷言失敗時(shí)測試失敗。

  • @Test(expected = ExceptionName.class)
    表示預(yù)期會(huì)拋出的異常肠鲫,如拋出聲明類型的異常測試仍然顯示成功员帮。
  • @Test(timeout = milliseconds)
    表示超出時(shí)間測試程序自動(dòng)結(jié)束并顯示為失敗,時(shí)間單位為毫秒导饲。

@BeforeClass, @AfterClass, @Before, @After

  • @BeforeClass
    該方法在所有的方法運(yùn)行前被執(zhí)行捞高,必須為static氯材。當(dāng)測試類被加載后接著就會(huì)被運(yùn)行,且在內(nèi)存中只會(huì)存在一份實(shí)例棠枉∨ㄌ澹可用于加載配置文件泡挺。
  • @AfterClass
    該方法在所有的方法運(yùn)行結(jié)束后被執(zhí)行辈讶,必須為static。通常用來對(duì)資源的清理娄猫,如關(guān)閉數(shù)據(jù)庫的連接贱除。
  • @Before, @After
    分別在每一個(gè)測試方法運(yùn)行前媳溺、后被執(zhí)行一次月幌。可用于初始化變量或重置變量等悬蔽。

@Ignore

被注釋的測試方法會(huì)被測試運(yùn)行器忽略扯躺,測試時(shí)不執(zhí)行。

@RunWith

可以更改測試運(yùn)行器蝎困,運(yùn)行器需繼承org.junit.runner.Runner录语。

測試套件

可用于多個(gè)測試類的同時(shí)測試。測試套件基本結(jié)構(gòu)如下:

package com.mydemo.util;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({Test1.class,Test2.class,Test3.class, Suite1.class})
public class SuiteTest {
}
  • 創(chuàng)建測試套件類SuiteTest.class禾乘,作為測試套件的入口類澎埠,這個(gè)類不包含任何方法
  • @RunWith(Suite.class) 更改測試運(yùn)行器始藕,避免使用JUnit默認(rèn)測試運(yùn)行器蒲稳。
  • @Suite.SuiteClasses({}) 添加測試類到測試套件中,參數(shù)為數(shù)組形式的測試類或測試套件類伍派。

參數(shù)化測試

package com.mydemo.util;

import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

// 更改默認(rèn)測試運(yùn)行器
@RunWith(Parameterized.class)
public class ParameterTest {
    // 聲明變量存放預(yù)期值和測試數(shù)據(jù)
    int expected =0;
    int input1 = 0;
    int input2 = 0;
    // public構(gòu)造函數(shù)給預(yù)期值和測試數(shù)據(jù)賦值
    public ParameterTest(int expected,int input1,int input2) {
        this.expected = expected;
        this.input1 = input1;
        this.input2 = input2;
    }
    // 返回值為Collection的public static方法江耀,返回測試數(shù)據(jù)集合,用@Parameters修飾
    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][]{
                {3,1,2},
                {4,2,2}
        }) ;
    }
    @Test
    public void testAdd() {
        assertEquals(expected, MyClass.add(input1, input2));
    }
}

參考資料

http://junit.org/junit4/
http://www.imooc.com/learn/356

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诉植,一起剝皮案震驚了整個(gè)濱河市祥国,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌倍踪,老刑警劉巖系宫,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異建车,居然都是意外死亡扩借,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門缤至,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潮罪,“玉大人康谆,你說我怎么就攤上這事〖档剑” “怎么了沃暗?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長何恶。 經(jīng)常有香客問我孽锥,道長,這世上最難降的妖魔是什么细层? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任惜辑,我火速辦了婚禮,結(jié)果婚禮上疫赎,老公的妹妹穿的比我還像新娘盛撑。我一直安慰自己,他們只是感情好捧搞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布抵卫。 她就那樣靜靜地躺著,像睡著了一般胎撇。 火紅的嫁衣襯著肌膚如雪介粘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天创坞,我揣著相機(jī)與錄音碗短,去河邊找鬼。 笑死题涨,一個(gè)胖子當(dāng)著我的面吹牛偎谁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纲堵,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼巡雨,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了席函?” 一聲冷哼從身側(cè)響起铐望,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茂附,沒想到半個(gè)月后正蛙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡营曼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年乒验,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒂阱。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锻全,死狀恐怖狂塘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鳄厌,我是刑警寧澤荞胡,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站了嚎,受9級(jí)特大地震影響泪漂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜新思,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一窖梁、第九天 我趴在偏房一處隱蔽的房頂上張望赘风。 院中可真熱鬧夹囚,春花似錦、人聲如沸邀窃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞬捕。三九已至鞍历,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肪虎,已是汗流浹背劣砍。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扇救,地道東北人刑枝。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像迅腔,于是被迫代替她去往敵國和親装畅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 簡介 測試 在軟件開發(fā)中是一個(gè)很重要的方面沧烈,良好的測試可以在很大程度決定一個(gè)應(yīng)用的命運(yùn)掠兄。軟件測試中,主要有3大種類...
    Whyn閱讀 5,730評(píng)論 0 2
  • JUnit是一個(gè)開源的java自動(dòng)化單元測試框架锌雀。由 Erich Gamma 和 Kent Beck 與1997年...
    zhaozhiwen閱讀 2,073評(píng)論 2 13
  • JUnit Intro Android基于JUnit Framework來書寫測試代碼蚂夕。JUnit是基于Java語...
    chandarlee閱讀 2,254評(píng)論 0 50
  • 跟現(xiàn)在流行的大多數(shù)持久層框架一樣,MyBatis同樣提供了緩存機(jī)制腋逆。持久層緩存的目的婿牍,為了降低應(yīng)用層對(duì)物理數(shù)據(jù)源(...
    博為峰51Code教研組閱讀 190評(píng)論 0 0
  • 昨晚跟老公鬧點(diǎn)小別扭,不論誰對(duì)誰錯(cuò)闲礼,說說今早我處理的方式牍汹。首先铐维,從昨晚開始我就一直在用心體會(huì)我的情緒,我的氣憤來自...
    崔峰媳婦孫小瑩閱讀 105評(píng)論 0 0