天天看點

Junit入門到掌握-3-JUnit基礎-第一個JUnit單元測試代碼詳解

前面環境搭建好了,我們來寫一個JUnit的單元測試,然後分析裡面代碼,引出一些JUnit的基本概念。

1.環境準備

建立一個overview包,然後建立一個Test01.java檔案,寫入下面代碼内容。

package overview;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class Test01 {
	
	@Test
	public void test1() {
		assertEquals(5, "hello".length());
	}
}
           

儲存之後,JUnit自動添加到了build path依賴。

Junit入門到掌握-3-JUnit基礎-第一個JUnit單元測試代碼詳解

這個可以看出使用Junit的版本号。

2.代碼解釋

@Test
	public void test1() {
		assertEquals(5, "hello".length());
	}
           

在Junit中,任何測試方法如果想要通過JUnit方式運作,這些方法前面一行需要添加@Test注解。添加了這個注解,就是告訴JUnit架構,這個方法是一個JUnit測試用例,不加就是Java中普通的方法。在添加這個注解過程,會提示要導入JUnit的Test包,是以導包語句中有 import org.junit.Test;

這個地方有很多知識點,我們一個一個來講。

2.1 JUnit方法隻能使用public修飾

關于這點,我們把public 改成private,然後運作下。

Junit入門到掌握-3-JUnit基礎-第一個JUnit單元測試代碼詳解

如果是private修飾,會報Java異常,沒有找到比對的測試。

2.2 JUnit方法不能有傳回值。

把Junit方法換成下面代碼,嘗試執行下run as junit。

@Test
	public int test1() {
		assertEquals(5, "hello".length());
		return 1 + 1;
	}
           

得到和2.1中相同的異常,是以記住Junit測試方法中沒有傳回值,必須是void。

2.3 早期JUnit方法名稱必須是test開頭,現在可以是任意。

這裡說一下,為什麼我寫方法名稱是test1(), 這個是個人習慣。因為早期JUnit版本就是要求方法名稱必須小寫的test開頭,後來最新和JUnit4和JUnit5就沒有這個要求,方法名稱可以随便取,例如下面的例子。

@Test
	public void verifyStringLength() {
		assertEquals(5, "hello".length());
	}
           

上面方法名稱為verifyStringLength,驗證字元長度,也是可以運作

2.4 斷言

在JUnit中,關于斷言,有很豐富的封裝好的斷言,判斷方法供我們使用,這也是作為Java程式員使用JUnit寫單元測試的一個理由。既然有輪子,為什麼還要去造輪子呢。

assertEquals(5, "hello".length());
           

這個斷言方法是判斷兩個對象相等,第一個參數是期待結果,第二個參數是實際結果。

關于想了解更多斷言,在Junit中斷言方法一般是assert開頭,然後你根據代碼提示,選擇你需要的斷言方法

Junit入門到掌握-3-JUnit基礎-第一個JUnit單元測試代碼詳解

2.5 更多注解

上面我說了一個@Test注解,如果要非常熟練使用JUnit,我們還需要學習以下常見的注解。

@Test
@Before
@After
@BeforeClass
@AfterClass
@Ignore
@Test(expected = Exception.class)
@Test(timeout=100)
           

這些注解,我們後面文章會逐一介紹到。

繼續閱讀