1. 程式人生 > >Java學習之Junit

Java學習之Junit

之前在學習軟體測試的時候,接觸過Cunit,今天學習Java的時候發現Java也有單元測試框架–Junit。
我們在編寫程式的時候,需要寫很多方法或函式,我們同時應該確保每一個函式都完全正確。所以說,每編寫完一個函式之後,都應該對這個函式的方方面面進行測試,這樣的測試我們稱之為單元測試。
傳統的程式設計方式,進行單元測試是一件很麻煩的事情,你要重新寫另外一個程式,在該程式中呼叫你需要測試的方法,並且仔細觀察執行結果,看看是否有錯。正因為如此麻煩,所以程式設計師們編寫單元測試的熱情不是很高。
eclipse上自帶Junit4和Junit5,一般我們使用Junit4;
1.Junit4註解


@Test :該註釋表示,用其附著的公共void方法(即用public修飾的void型別的方法 )可以作為一個測試用例;
@Before :該註釋表示,用其附著的方法必須在類中的每個測試之前執行,以便執行測試某些必要的先決條件;
@BeforeClass :該註釋表示,用其附著的靜態方法必須執行一次並在類的所有測試之前,發生這種情況時一般是測試計算共享配置方法,如連線到資料庫;
@After :該註釋表示,用其附著的方法在執行每項測試後執行,如執行每一個測試後重置某些變數,刪除臨時變數等;
@AfterClass :該註釋表示,當需要執行所有的測試在JUnit測試用例類後執行,AfterClass註解可以使用以清理建立方法,如斷開資料庫連線,注意:附有此批註(類似於BeforeClass)的方法必須定義為靜態;
@Ignore :該註釋表示,當想暫時禁用特定的測試執行可以使用忽略註釋,每個被註解為@Ignore的方法將不被執行。
2 .Juint4斷言

斷言是一些方法,所有這些方法都來自 org.junit.Assert 類,用來檢測bug。
簡而言之,我們就是通過斷言方法來判斷實際結果與我們預期的結果是否相同,如果相同,則測試成功,反之,則測試失敗。
 assertEquals
void assertEquals([String message], expected value, actual value)
斷言兩個值相等,值的型別可以為int、short、long、byte、char 或者java.lang.Object,
其中第一個引數是一個可選的字串訊息;
 assertTrue
void assertTrue([String message], boolean condition) :
斷言一個條件為真;
 assertFalse
void assertFalse([String message],boolean condition) :
斷言一個條件為假;
 assertNotNull
void assertNotNull([String message], java.lang.Object object) :
斷言一個物件不為空(null);
 assertNull
void assertNull([String message], java.lang.Object object) :
斷言一個物件為空(null);
 assertSame
void assertSame([String message], java.lang.Object expected, java.lang.Object actual) :
斷言兩個物件引用相同的物件;
 assertNotSame
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) :
斷言兩個物件不是引用同一個物件;
 assertArrayEquals
void assertArrayEquals([String message], expectedArray, resultArray) :
斷言預期陣列和結果陣列相等,陣列的型別可以為int、long、short、char、byte 或者 java.lang.Object
3 .JUnit 4.X和JUnit 3.X的區別

 JUnit 3.X
(1)使用 JUnit 3.X 版本進行單元測試時,測試類必須要繼承於 TestCase 父類;
(2)測試方法需要遵循的原則:
public的; void的;無方法引數;方法名稱必須以 test 開頭;
 JUnit 4.X
(1)使用 JUnit 4.X 版本進行單元測試時,不用測試類繼承TestCase父類;
(2)JUnit 4.X 版本,引用了註解的方式進行單元測試;

演示:

package cn.njit.jUnit;

public class MyMath {
	public int add(int a,int b,int c) {
		return a+b+c;
	}
}
---------------------------------------------------------------------------------
package cn.njit.jUnit;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class TestAll {
	@Before
	public void before() {
		System.out.println("Before test");
	}
	@Test
	public void test1() {
		//出現錯誤直接跳出,不會繼續執行
		System.out.println("Test1");
		MyMath mm=new MyMath();
		Assert.assertEquals(2, mm.add(1, 2, 3));
		Assert.assertEquals(0, mm.add(3, 3, 3));
		Assert.assertFalse(8==mm.add(1, 1, 1));
		
		Assert.assertEquals(1, 1);
	}
	@Test
	public void test2() {
		System.out.println("Test2");
		
		
	}
}	

在這裡插入圖片描述