Junit測試 實例

Junit測試 詳細介紹

一、爲什麼要進行測試

其實編寫測試代碼看起來是增加了代碼量和工作量,實際不然。測試可以減少後期項目上線debug調試排錯的時間,提升代碼質量,讓代碼變得更容易維護。

二、什麼是單元測試

單元測試簡單來說就是對項目最小的功能模塊進行測試,在java中是一個方法。假如說你現在寫好了一個類,那你怎麼驗證這個類中的方法有沒有問題?如果按照咱們傳統的單元測試做法,就是再編寫一個類,然後在新編寫的這個類的main方法中調用被測試的類的方法,而且一般情況下都需要通過肉眼去觀察運行結果是否正確。
那麼問題來了,萬一這時候有很多類都要進行測試,那怎麼辦?那是不是要寫很多個main方法,或者說是把測試代碼寫到一個main方法中。但是這樣做會增加測試複雜度和提高工作量,所以說程序員對於單元測試的熱情一直不是很高。後來有一個大神推出了一個可以簡化單元測試工作的jar包(JUnit),大大減輕了程序員進行單元測試的工作量。

三、JUnit是什麼?

JUnit是一個用於java語言的單元測試框架,可以簡化單元測試的工作量。
很多開發環境默認已經集成了Junit:Eclipse,MyEclipse,Idea。

四、JUnit使用注意事項

1.測試方法上必須要使用@Test註解進行修飾
2.所有測試方法必須要使用public void進行修飾,且不能有參數
3.每個測試方法都要保證能獨立運行,測試方法之間不能有依賴。
4.測試類儘量以(被測試類的名字+Test)作爲測試類的名字(非必須,只是爲了更好的編程習慣)
5.測試類所在的包名儘量和被測試類的包名保持一致(非必須,只是爲了更好。。。)
6.測試方法儘量以test作爲前綴(非必須,只是爲了更好。。。)

五、JUnit的使用

1.在項目的pom.xml中配置JUnit單元測試框架jar包

六、測試失敗的兩種情況

Failure:代碼正常但是運行結果和期望結果不一致導致的【Assert.assertEquals(num, 2);】
Error:代碼執行過程中出現異常!

七、JUnit4中的常用註解

@Test:修飾普通方法爲測試方法
@BeforeClass:在測試類的所有測試方法執行前執行,必須用static修飾
@AfterClass:在測試類的所有測試方法執行後執行,必須用static修飾
@Before:在測試類的每個測試方法執行前執行一次
@After:在測試類的每個測試方法執行後執行一次
@Ignore:忽略測試方法

public class CalculatorTest {
	
	private static Calculator cal;

	@BeforeClass
	public static void createCalculator(){
		cal = new Calculator();
		System.out.println("我會在所有測試方法執行前執行一次,只會執行一次!");
	}

	@AfterClass
	public static void destoryCalculator(){
		cal = null;
		System.out.println("我會在所有測試方法執行後執行一次,只會執行一次!");
	}
	
	@Before
	public void start(){
		System.out.println("開始執行測試方法");
	}
	
	@After
	public void end(){
		System.out.println("執行測試方法結束");
	}
	
	@Test
	public void testAdd(){
		System.out.println("進行加法測試");
		int num = cal.add(1, 2);
		//斷言機制,可以判斷程序運行結果和預期結果是否一致!
		Assert.assertEquals(num, 2);
	}
	
	@Test
	@Ignore
	public void testSub(){
		System.out.println("進行減法測試");
		int num = cal.sub(10, 2);
		Assert.assertEquals(num, 8);
	}
}

八、JUnit測試套件的使用(當有多個類需要統一測試)

在實際項目中,隨着開發的深入,項目會越來越大,相應的測試類也會越來越多,那麼總不能一個一個的運行吧,JUnit測試套件就提供了批量運行的方法
測試套件就是組織測試類一起運行的
寫一個類作爲測試套件的入口類,這個類裏不包含其他的方法,更改測試運行器爲Suite.class,將要測試的類作爲數組傳入到Suite.SuiteClasses({})
在這裏插入圖片描述

九、Maven Web項目使用Junit進行測試

1.	在項目的pom.xml中Junit jar包的依賴配置

十、Maven Web項目+Spring Test框架+JUnit進行測試

【當沒有controller,無法啓動服務,無法加載配置文件時候,如何測試:】
1.在項目pom.xml中加入JUnit和Spring Test jar包的依賴配置
2.編寫一個測試類

//用於指定junit運行環境,是junit提供給其他框架測試環境接口擴展,爲了便於使用spring的依賴注入
//spring提供了org.springframework.test.context.junit4.SpringJUnit4ClassRunner作爲Junit測試環境
@RunWith(SpringJUnit4ClassRunner.class)
//加載配置文件(加載多個)
@ContextConfiguration(locations = { "classpath*:/applicationContext_realm.xml",
                                    "classpath*:/applicationContext_daily.xml",
                                    "classpath*:/applicationContext.xml",
                                    "classpath*:/applicationContext_airwarm.xml",
                                    "classpath*:/applicationContext_airwet.xml",
                                    "classpath*:/applicationContext_illum.xml",
                                    "classpath*:/applicationContext_rainfall.xml"
                                })

//這個非常關鍵,如果不加入這個註解配置,事務控制就會完全失效!
@Transactional  
//這裏的事務關聯到配置文件中的事務控制器(transactionManager = "transactionManager"),
//同時指定自動回滾(defaultRollback = true)。這樣做操作的數據纔不會污染數據庫!  
@TransactionConfiguration(transactionManager="transactionManager",defaultRollback = true)
public class BookDaoTest {
@Autowired
	private BookDao bookDao;

@Test
	    	public void testAddBook(){
	    		Book book = new Book();
			book.setBookName(“sdssd”);
			bookDao.save(book);
	}
}

Junit 斷言詳解:

其中方法應用的時候由於其都是static 方法,所以直接調用即可
(如:Assert.assertEquals(1,1) )
  斷言是編寫測試用例的核心實現方式,即期望值是多少,測試的結果是多少,以此來判斷測試是否通過。
|assertArrayEquals(expecteds, actuals) 查看兩個數組是否相等。

assertEquals(expected, actual) 查看兩個對象是否相等。類似於字符串比較使用的equals() 方法

assertNotEquals(first, second) 查看兩個對象是否不相等。

assertNull(object) 查看對象是否爲空。

assertNotNull(object) 查看對象是否不爲空。

assertSame(expected, actual) 查看兩個對象的引用是否相等。類似於使用“==”比較兩個對象

assertNotSame(unexpected, actual) 查看兩個對象的引用是否不相等。類似於使用“!=”比較兩個對象

assertTrue(condition) 查看運行結果是否爲true。

assertFalse(condition) 查看運行結果是否爲false。

assertThat(actual, matcher) 查看實際值是否滿足指定的條件

fail() 讓測試失敗
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章