JUnit測試
環境:idea
通過maven管理jar包,匯入:JUnit依賴(百度:mvn JUnit)
首先,對測試的內容要有一個規範的管理和命令。
0、新建一個原始碼目錄來存放我們的測試程式碼,即將測試程式碼和專案業務程式碼分開
1、測試類所在的包名應該和被測試類所在的包名保持一致 、
2、測試類使用Test作為類名的字尾
3、測試方法使用test作為方法名的字首
對於測試的方法中,要求統一寫為:public void不帶返回引數的方法標籤。重要註解:
@Test:測試方法
a、@Test(expected=XXException.class):如果程式的異常和XXException.class一樣,則測試通過;否則報錯
b、@Test(timeout=100):如果程式的執行能在100毫秒之內完成,則測試通過;否則報錯
@Ignore: 忽略該測試方法,暫不執行此段程式碼
@Before: 再每一個測試方法之前執行(如果有多個,則每個測試方法之前都會首先執行該方法)
@After: 每一個測試方法之後執行,與@Before相反
@BeforeClass: 方法必須要是靜態方法(static 宣告),在before之前執行,只會執行一次(如果有多個測試方法)。
@AfterClass: 方法必須要是靜態方法(static 宣告),在after之後執行,只會執行一次(如果有多個測試方法)。
JUnit提供了一些方法,幫助我們判斷某個單元測試是否異常。我們把所有這些方法統稱為斷言(assert)。斷言是單元測試最基本的組成部分。(下面都是常用的,具體語法可參考JUnitAPI文件)
1、assertEquals([String message],expected,actual):比較兩個基本型別或物件是否相等(expected和actual是原始型別數值(primitive value)或者必須為實現比較而具有equal方法,message是選項,如果不相等時會列印message內容。測試時有一點疑惑:Integer在這裡不能通過java自動裝包拆包隱性轉為int型,還是通過指定int型才可。pin!)
2、assertFalse([String message],boolean condition):斷言為假,即condition條件為假時,返回success,反之failure
3、assertTrue([String message],boolean condition):斷言為真,即condition條件為真時,返回success,反之failure
4、assertNull([String message],java.lang.Object object):檢查是否為空;【對比:assertNotNull】
5、assertSame([String message],expected,actual):檢查兩個物件是否為同一例項【對比:assertNotSame】
6、fail( String message ):使測試立即失敗,其中 message 引數使可選的。這種斷言通常被用於標記某個不應該到達的分支(例如,在一個預期發生的異常之後)
示例,如我們在編寫介面時,需要Service層進行Test(Controller層一般不用,如果要用的話,使用Mockio)。
程式碼如下:
1 @RunWith(SpringRunner.class) 2 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 3 public class ValueMetaServiceTest { 4 5@Autowired 6private ValueMetaService valueMetaService; 7 8@Before 9public void before() { 10System.out.println("測試開始!"); 11} 12 13@Test 14public void valueMetaControllerTest() { 15PageValueMeta pageValueMeta = new PageValueMeta(); 16pageValueMeta.setId("jhhefsdf23423kdfs"); 17valueMetaService.insert(pageValueMeta); 18System.out.println(pageValueMeta); 19} 20 }