Junit介紹
JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源於Kent Beck的sUnit的xUnit家族中最為成功的一個。 JUnit有它自己的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit作為單元測試的工具。
JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。
Junit簡單使用
1、新建一個普通的maven工程,引入依賴
1 <dependency> 2 <groupId>junit</groupId> 3 <artifactId>junit</artifactId> 4 <version>4.12</version> 5 </dependency>
2、新建一個測試類JunitTest.java,並且寫一個無入參,無返回值的普通方法,在方法上加上注解@Test,如下
1 package com.test.junite; 2 3 import org.junit.Test; 4 5 public class JunitTest { 6 7 @Test 8 public void testJunit(){ 9 System.out.println("測試Junit,簡單使用..."); 10 } 11 }
3、測試結果
Junit常用注解
1、與測試流程相關的4個注解
1 package com.test.junite; 2 3 import org.junit.After; 4 import org.junit.AfterClass; 5 import org.junit.Before; 6 import org.junit.BeforeClass; 7 import org.junit.Test; 8 9 public class JunitFlowTest { 10 11 /** 12 * 1、@BeforeClass修飾的方法會在所有方法被調用前被執行 13 * 而且該方法是靜態的,所有當測試類被加載后接着就會運行它 14 * 而且在內存中它只會存在一份實例,它比較適合加載配置文件 15 * 2、@AfterClass所修飾的方法通常用來對資源的清理,如關閉數據庫的連接 16 * 3、@Before和@After會在每個測試方法的前后各執行一次 17 * 18 */ 19 20 @BeforeClass 21 public static void setUpBeforeClass() throws Exception { 22 System.out.println("this is @BeforeClass ..."); 23 } 24 25 @AfterClass 26 public static void tearDownAfterClass() throws Exception { 27 System.out.println("this is @AfterClass ..."); 28 } 29 30 @Before 31 public void setUp() throws Exception { 32 System.out.println("this is @Before ..."); 33 } 34 35 @After 36 public void tearDown() throws Exception { 37 System.out.println("this is @After ..."); 38 } 39 40 @Test 41 public void test1() { 42 System.out.println("this is test1 ..."); 43 } 44 45 @Test 46 public void test2() { 47 System.out.println("this is test2 ..."); 48 } 49 50 }
運行結果如下:
2、與@Test相關的
1 package com.test.junite; 2 3 import static org.junit.Assert.assertEquals; 4 5 import org.junit.Ignore; 6 import org.junit.Test; 7 8 public class AnnotationTest { 9 10 /** 11 * @Test:將一個普通的方法修飾成為一個測試方法 12 * @Test(expected=XX.class) 13 * @Test(timeout=毫秒) 14 * @BeforeClass:它會在所有方法運行前被執行,static修飾 15 * @AfterClass:它會在所有方法運行后被執行,static修飾 16 * @Before:會在每一個測試方法運行前被執行一次 17 * @After:會在每一個測試方法運行后被執行一次 18 * @Ignore:所修飾的測試方法會測試運行器被忽略 19 * @RunWiht:可以更改測試運行器 org.junit.runner.Runner 20 */ 21 @Test(expected=ArithmeticException.class) 22 public void testDivide() { 23 assertEquals(3, 3 / 0); 24 } 25 26 @Test(timeout=2000) 27 public void testTimeout() { 28 while (true) { 29 System.out.println("run forever ..."); 30 } 31 } 32 33 @Ignore 34 @Test 35 public void testIgnore() { 36 System.out.println("this is testIgnore ..."); 37 } 38 }
Junit測試類編寫原則
1、測試方法必須使用@Test進行修飾
2、測試方法必須使用public void 進行修飾,不能帶任何參數
3、新建一個源碼目錄來存放我們的測試代碼
4、測試類的包應該和被測試類保持一致
5、測試單元中的每個方法必須可以獨立測試,測試方法間不能有任何依賴
6、測試類使用Test作為類名后綴(非必須)
7、測試方法使用test作為方法前綴(非必須)