單元測試JunitGenerator

1. 前提條件

  • 開發(fā)環(huán)境已正確配置
  • 工程已解決JUnit依賴關(guān)系(pom.xml)
  • 我用的是4.12版本:

<dependency>
???? <groupId>junit</groupId>
???? <artifactId>junit</artifactId>
???? <version>4.12</version>
</dependency></pre>

2. IDEA中JUnit配置

(1) 打開Settings窗口搜索junit诡蜓,如圖(兩個插件都勾選添加):

image

(2) JUnitGenerator V2.0插件,可以幫助我們自動生成測試代碼胰挑。如果搜索junit沒有JUnitGenerator V2.0時蔓罚,如下圖操作(下載添加):

image

更改生成文件目錄步驟

打開File->Settings
搜索junit椿肩,找到JUnit Generator
修改Properties中Output Path為測試用例生成的目錄,這里修改為java目錄:? ?
${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME}
?

切換到JUnit 4選項卡豺谈,可以修改生成測試用例的模板郑象,比如類名、包名

剩下幾個配置的更改:

這里把Junit4那一欄的所有配置都拉出來了茬末,如果下次要配置的話厂榛,粘貼好了。
具體修改的地方:
包名丽惭、import引入击奶、@注解

######################################################################################## 
## 
## Available variables: 
##         $entryList.methodList - List of method composites 
##         $entryList.privateMethodList - List of private method composites 
##         $entryList.fieldList - ArrayList of class scope field names 
##         $entryList.className - class name 
##         $entryList.packageName - package name 
##         $today - Todays date in MM/dd/yyyy format 
## 
##            MethodComposite variables: 
##                $method.name - Method Name 
##                $method.signature - Full method signature in String form 
##                $method.reflectionCode - list of strings representing commented out reflection code to access method (Private Methods) 
##                $method.paramNames - List of Strings representing the method's parameters' names 
##                $method.paramClasses - List of Strings representing the method's parameters' classes 
## 
## You can configure the output class name using "testClass" variable below. 
## Here are some examples: 
## Test${entry.ClassName} - will produce TestSomeClass 
## ${entry.className}Test - will produce SomeClassTest 
## 
######################################################################################## 
## 
#macro (cap $strIn)$strIn.valueOf($strIn.charAt(0)).toUpperCase()$strIn.substring(1)#end 
## Iterate through the list and generate testcase for every entry. 
#foreach ($entry in $entryList) 
#set( $testClass="${entry.className}Test") 
## 
package $entry.packageName; 

import org.junit.Test; 
import org.junit.Before; 
import org.junit.After; 
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/** 
* ${entry.className} Tester. 
* 
* @author <Authors name> 
* @since <pre>$today</pre> 
* @version 1.0 
*/ 

@Runwith(SpringRunner.class)
@SpringbootTest
public class $testClass { 

@Before
public void before() throws Exception { 
} 

@After
public void after() throws Exception { 
} 

#foreach($method in $entry.methodList) 
/** 
* 
* Method: $method.signature 
* 
*/ 
@Test
public void test#cap(${method.name})() throws Exception { 
//TODO: Test goes here... 
} 

#end 

#foreach($method in $entry.privateMethodList) 
/** 
* 
* Method: $method.signature 
* 
*/ 
@Test
public void test#cap(${method.name})() throws Exception { 
//TODO: Test goes here... 
#foreach($string in $method.reflectionCode) 
$string 
#end 
} 

#end 
} 
#end

? ? ?

image
image

(3) 調(diào)用模板的方法(Alt+Insert)默認(rèn)測試所有所有方法。若想要動態(tài)個性化生成责掏,可以在所要測試的類頁面上柜砾,使用該快捷操作Ctrl + Shift + T,如下圖個性化設(shè)置:

image
image

現(xiàn)在可以通過右鍵菜單在這個類上運(yùn)行'*測試類名'來進(jìn)行測試,或通過Run → Edit Configurations來進(jìn)行。

image

3. Junit生成之后如何使用

一個測試類單元測試的執(zhí)行順序為:

@BeforeClass –> @Before –> @Test –> @After –> @AfterClass

每一個測試方法的調(diào)用順序為:

@Before –> @Test –> @After

? ?

Junit分三步:

1. 打注解

@RunWith(SpringRunner.class)
@SpringBootTest
(這兩個注解打完之后可以自動導(dǎo)入maven的dependency)

2. new一個class

3. 調(diào)用class中的函數(shù)

? ?

在@Before里面寫@Autowired或者new一個class换衬,Junit的核心目的其實(shí)就是把一個controller或者一個service或者一個無論什么的bean放在test環(huán)境中測試一下痰驱,test這邊的第一句應(yīng)該就是new一個class,然后后面就是調(diào)用這個class的函數(shù)瞳浦。

4. JUnit常用斷言及注解

JUnit為我們提供了一些輔助函數(shù)萄唇,他們用來幫助我們確定被測試的方法是否按照預(yù)期的效果正常工作,通常术幔,把這些輔助函數(shù)稱為斷言另萤。

斷言核心方法

image

注解

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市诅挑,隨后出現(xiàn)的幾起案子四敞,更是在濱河造成了極大的恐慌,老刑警劉巖拔妥,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忿危,死亡現(xiàn)場離奇詭異,居然都是意外死亡没龙,警方通過查閱死者的電腦和手機(jī)铺厨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硬纤,“玉大人解滓,你說我怎么就攤上這事◇菁遥” “怎么了洼裤?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長溪王。 經(jīng)常有香客問我腮鞍,道長值骇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任移国,我火速辦了婚禮吱瘩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘迹缀。我一直安慰自己搅裙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布裹芝。 她就那樣靜靜地躺著,像睡著了一般娜汁。 火紅的嫁衣襯著肌膚如雪嫂易。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天掐禁,我揣著相機(jī)與錄音怜械,去河邊找鬼。 笑死傅事,一個胖子當(dāng)著我的面吹牛缕允,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹭越,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼障本,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了响鹃?” 一聲冷哼從身側(cè)響起驾霜,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎买置,沒想到半個月后粪糙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忿项,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年蓉冈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轩触。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡寞酿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脱柱,到底是詐尸還是另有隱情熟嫩,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布褐捻,位于F島的核電站掸茅,受9級特大地震影響椅邓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昧狮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一景馁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逗鸣,春花似錦合住、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卿樱,卻和暖如春僚害,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背繁调。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工萨蚕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹄胰。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓岳遥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親裕寨。 傳聞我的和親對象是個殘疾皇子浩蓉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355