Java之單元測試工具(Junit)


 

Junit是Java單元測試框架,一般Eclipse里面會集成這個Junit4測試工具

 

既然是測試工具,雖然開發用得比較多,但作為測試人員也需要具備會Junit測試的思想,況且技多不壓身

這里簡單介紹下用法:

 

1、在eclipse中創建一個junit4Test工程

點擊“File” -> “New” -> “Java Project”,出現如下界面,填寫工程名稱junit4Test:

點擊Next或者Finish,即創建好了junit4Test工程

 

2、創建com.junit4Test包

右鍵“junit4Test”工程名稱,選擇“New” -> “Package”,即得到包的配置界面如下: 

填寫包名,然后點擊Finish即創建了junit4TestPackage包

 

3、創建被測試類和方法

這里我們用簡單的加法來做被測試對象

右擊包名“junit4TestPackage” -> “New” -> “Class”,出現下面的配置界面:

 

配置好類名稱,然后點擊“Finish”即創建了類,然后在類里面寫一個加法的方法:

package com.junit4Test;

public class Add {
	public int addTest(int x,int y){
		return x + y;
	}

}

  

4、創建測試包

創建方法和上面的創建包一樣,取個名字“junit4AddTest”

 

5、創建測試類

右鍵測試包名“com.junit4AddTest” -> “New” -> “JUnit Test Case”,如果你沒有導入Junit的jar包,那你需要先導入下,右擊工程名稱“junit4Test”,選擇“Properties”或者選擇“Build Path” -> “Configure Build Path” ,出現如下配置界面:

按照上面步驟配置即可。然后按照開始說的,就會出現如下配置界面:

 

寫好測試類名稱,選擇好需要的方法(如無需要可以不選擇)和需要測試的類(因為不在一個包里面,這里填寫的是包名+類名),然后點擊“Next”:

勾選被測試方法addTest,然后選擇“Finish”,這時候就創建好了用例:

這時候看到的是一個空的測試方法,我們需要調用被測試方法並做斷言,上面右側紅框中應該是如下代碼:

package com.junit4AddTest;

import static org.junit.Assert.*;
import com.junit4Test.*;
import org.junit.Test;

public class AddTest {

	@Test
	public void testAddTest() {
		int z = new Add().addTest(1,2);
		assertEquals(3,z);
	}

}

  

 這時候就可以執行測試類了,右擊測試用例可以看到,原來是執行java程序,現在變成了執行junit Test:

 

 執行結果如下:

執行結果是Runs:1/1(總共一個用例,執行了一個用例),Errors:0(沒有錯誤),Failures:0(沒有失敗)

 

如果我們把斷言值改成:assertEquals(2,z);,則結果如下:

 

把斷言改了之后,左側顯示Failures:1(失敗一個用例),用例也顯示為,左側下面也給出了Trace。

 

我們在測試類中復制一個testAddTest方法,一個錯誤的一個成功的:

package com.junit4AddTest;

import static org.junit.Assert.*;
import com.junit4Test.*;
import org.junit.Test;

public class AddTest {

	@Test
	public void testAddTest() {
		int z = new Add().addTest(1,2);
		assertEquals(2,z);
	}
	@Test
	public void testAddTest1() {
		int z = new Add().addTest(2,2);
		assertEquals(4,z);
	}

}

  

我們再執行下看看結果如下:

失敗的依然是標記失敗

 

------------------------------------------------------------------華麗的分割線------------------------------------------------------------------

 

補充說明下Junit 的幾種注解(和python中的裝飾器類似):

  1.@Test: 測試方法

    a)(expected=XXException.class)如果程序的異常和XXException.class一樣,則測試通過
    b)(timeout=100)如果程序的執行能在100毫秒之內完成,則測試通過

  2.@Ignore: 被忽略的測試方法:加上之后,暫時不運行此段代碼(JUnit5中使用@Disabled代替)

  3.@Before: 每一個測試方法之前運行(Junit5中使用@BeforeEach)

  4.@After: 每一個測試方法之后運行(Junit5中使用@BeforeEach)

  5.@BeforeClass: 方法必須必須要是靜態方法(static 聲明),所有測試開始之前運行,注意區分@before,是所有測試方法(Junit5中使用@BeforeAll)

  6.@AfterClass: 方法必須要是靜態方法(static 聲明),所有測試結束之后運行,注意區分 @After(Junit5中使用@AfterAll)

  7.@Parameters:表示該方法是個參數化測試(Junit5中使用@ParameterizedTest)

需要導入如下:

import org.junit.Test;
import org.junit.Ignore;
import org.junit.Before;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.AfterClass;

  

 如果在創建JUnit case的時候,勾選了相關項,則在case里面就會自動生成(下圖紅色框):

setUpBeforeClass對應BeforeClass

setUp對應Before

tearDownAfterClass對應AfterClass

tearDown對應After

這個有點類似python中unittest框架中的setUp和tearDown,包括里面的斷言。使用過的小伙伴應該一看就懂

 

另外Junit框架和python中unittest框架類似的是測試套件(testsuite)這個概念,下面講解下套件如何使用

我們在原來加法基礎上再增加一個被測類(減法),如下:

package com.junit4Test;

public class Minus {
	public int Minus(int x,int y){
		return x - y;
	}
}

則被測包中有倆個被測類:

 

在測試類中響應增加減法的測試類:

package com.junit4AddTest;

import static org.junit.Assert.*;

import org.junit.Test;
import com.junit4Test.*;

public class MinusTest {

	@Test
	public void test() {
		int z = new Minus().Minus(5,2);
		assertEquals(3,z);
	}

}

 

這樣,我們就有倆個類三個測試用例:

 

我們在測試類的包里面增加一個套件類,來統一管理測試類:

 

測試套件代碼如下:

package com.junit4AddTest;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({AddTest.class,MinusTest.class})
public class AllTestCase {
	/*
	 * 這里不需要寫任何東西
	 * 把需要的測試類填寫到上面SuiteClasses中即可
	 */
}

  

 這樣便於測試類的管理~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM