看看代碼就懂了,裏面有詳細註釋。
AddAndSub.Class
/**
* 我們通常的做法如下:
* 從這個測試方法可以看出,業務代碼和測試代碼放在一起,對於複雜的業務邏輯,一方面代碼量會非常龐大,
* 另一方面測試代碼會顯得比較凌亂,而JUnit就能改變這樣的狀況,它提供了更好的方法來進行單元測試。
*
*/
public class AddAndSub {
public int add(int m, int n) {
int num = m + n;
return num;
}
public int sub(int m, int n) {
int num = m - n;
return num;
}
/**
* @param args
*/
public static void main(String[] args) {
AddAndSub addAndsub = new AddAndSub();
if (addAndsub.add(4, 6) == 10) {
System.out.println("Test Ok");
} else {
System.out.println("Test Fail");
}
if (addAndsub.sub(6, 4) == 2) {
System.out.println("Test Ok");
} else {
System.out.println("Test Fail");
}
}
}
TestAddAndSub.Class
import service.AddAndSub;
import junit.framework.TestCase;
/**
* 如果要使用JUnit,則測試類都必須繼承TestCase。
* 當然目前的最新版JUnit是不需要繼承它的,但並不是說TestCase類就沒有用了,
* 它仍然是JUnit工作的基礎。這裏先講述繼承TestCase類的方式,稍後再介紹不繼承的方式。
*
* JUnit的使用非常簡單,共有3步:
* 第一步、編寫測試類,使其繼承TestCase;
* 第二步、編寫測試方法,使用test+×××的方式來命名測試方法;
* 第三步、編寫斷言。如果測試方法有公用的變量等需要初始化和銷燬,則可以使用setUp,tearDown方法。
*/
public class TestAddAndSub extends TestCase {
private AddAndSub addAndsub;
@Override
public void setUp()throws Exception{
addAndsub = new AddAndSub();
super.setUp();
}
@Override
protected void tearDown() throws Exception {
addAndsub = null;
super.tearDown();
}
public void testadd() {
// 斷言計算結果與10是否相等
assertEquals(10, addAndsub.add(4, 6));
}
public void testsub() {
// 斷言計算結果與2是否相等
assertEquals(2, addAndsub.sub(6, 4));
}
public static void main(String args[]) {
junit.textui.TestRunner.run(TestAddAndSub.class);
}
}
TestAddAndSubByAnnotation.Class
import org.junit.Test;
import service.AddAndSub;
import static org.junit.Assert.*;
import org.junit.*;
/**
*Java 5的發佈爲JUnit帶來了新的特性。
*自JUnit 4.0之後,JUnit大量使用了annotations特性,使編寫單元測試變得更加簡單。
*(1)使用JUnit 4.0以上版本可以不用遵循以前JUnit約定的測試方法命名方法,直接使用註釋@Test
*(2)以前,JUnit使用SetUp和TearDown方法來進行初始化和銷燬動作,JUnit 4.0以上版本將不再強制使用SetUp和TearDown方法來進行初始化和銷燬,
*原來使用SetUp和TearDown方法的,現在可以使用註釋@Befor 和@After或者@BeforClass 和@AfterClass
*(3)新版本的JUnit將不再強制繼承TestCase,但需要import static org.junit.Assert.*;來實現斷言,示例代碼如下:
*/
public class TestAddAndSubByAnnotation {
private AddAndSub addAndsub;
//@Befor 和 @After 是針對每個方法都執行的創建和銷燬函數
//如果要針對一個類定義其創建和銷燬函數,可以使用@BeforClass 和 @AfterClass
@Before
public void init() throws Exception {
addAndsub = new AddAndSub();
}
@After
protected void destory() throws Exception {
addAndsub = null;
}
@Test
public void add() {
assertEquals(10, addAndsub.add(4, 6));
}
@Test
public void sub(){
assertEquals(2, addAndsub.sub(6, 4));
}
}