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