Junit 概念,原理這里不說(shuō)了,有興趣的朋友可以查閱相關(guān)資料,這篇文章主要是為了快速給大家介紹一下junit4的使用 以及與 junit3的區(qū)別,這里默認(rèn)大家對(duì)junit3已經(jīng)有些理解了。
下面開(kāi)始吧:
1.先寫(xiě)個(gè)簡(jiǎn)單的被測(cè)試類(lèi):
package test.junit;
public class BaseClass {
public String method() {
return this.getClass().getName();
}
}
2.對(duì)于這個(gè)類(lèi)的unit測(cè)試,我們先看看在junit3中怎么進(jìn)行測(cè)試的吧:
package test.junit;
import junit.framework.TestCase;//引入TestCase類(lèi)
public class BaseClassTest extends TestCase {//類(lèi)必須繼承TestCase
BaseClass baseClass;
protected void setUp() throws Exception {
super.setUp();
baseClass = new BaseClass();
}
public void testMethod (){//測(cè)試方法必須以test開(kāi)頭
//通過(guò)assert*來(lái)檢驗(yàn)
assertTrue(baseClass.method ().equals("test.junit.BaseClass"));
}
}
通過(guò)上面這個(gè)類(lèi),我們對(duì)junit3進(jìn)行一些總結(jié):
1. 必須引入類(lèi)TestCase(import junit.framework.TestCase;),
2. 必須繼承類(lèi)TestCase (class BaseClassTest extends TestCase)
3. 測(cè)試方法必須以test開(kāi)頭(public void testMethod ())
4. 通過(guò)assert*方法來(lái)判斷結(jié)果(assertTrue(baseClass.method ().equals("test.junit.BaseClass"));)。
3. 下面來(lái)了解一下junit4里面的內(nèi)部關(guān)系吧,從這個(gè)圖中你可以看出junit4的主要功能:
下面來(lái)看看我們的主角junit4是怎么處理這些的吧:
package test.junit;
import org.junit.Test;//引入Test類(lèi)
import static org.junit.Assert.*;//引入Assert.*包
public class BaseClassTestNew {//這里不用再繼承TestCase類(lèi)了。
BaseClass baseClass = new BaseClass();
@Test public void methodOne(){//名字隨便寫(xiě),可以按你自己的愛(ài)好。但是必須以@Test開(kāi)頭
//還是以assert*來(lái)判斷
assertTrue(baseClass.methodOne().equals("test.junit.BaseClass"));
}
}
看看多么的簡(jiǎn)潔,好像少了很多約束,下面通過(guò)和junit3的特性進(jìn)行比較總結(jié)junit4的特性:
1.必須引入類(lèi)TestCase(import junit.framework.TestCase;
è必須引入類(lèi)Test(import org.junit.Test;),必須引入類(lèi)(import static org.junit.Assert.*;)
2.必須繼承類(lèi)TestCase (class BaseClassTest extends TestCase)
è不需要
3.測(cè)試方法必須以test開(kāi)頭(public void testMethod ())
è不需要,但是類(lèi)開(kāi)始的時(shí)候要標(biāo)記 @Test
4.通過(guò)assert*方法來(lái)判斷結(jié)果(assertTrue(baseClass.method ().equals("test.junit.BaseClass"));)。
從上面的對(duì)比,可以看出junit4與junit3的區(qū)別在于:
去掉與類(lèi)TestCase的偶聯(lián)性,觸發(fā)TestCase的地方是在@Test上。