詳解Java單元測(cè)試之Junit框架使用教程
單元測(cè)試
單元測(cè)試就是針對(duì)最小的功能單元編寫(xiě)測(cè)試代碼,Java程序最小的功能單元是方法,因此,單元測(cè)試就是針對(duì)Java方法的測(cè)試,進(jìn)而檢查方法的正確性
目前測(cè)試方法是怎么進(jìn)行的,存在什么問(wèn)題?
1、只有一個(gè)main方法,如果一個(gè)方法的測(cè)試失敗了,其他方法測(cè)試會(huì)受到影響
2、無(wú)法得到測(cè)試的結(jié)果報(bào)告,需要程序員自己去觀察測(cè)試是否成功
3、無(wú)法實(shí)現(xiàn)自動(dòng)化測(cè)試
Junit單元測(cè)試框架
1、Junit是使用Java語(yǔ)言實(shí)現(xiàn)的單元測(cè)試框架,它是開(kāi)源的,Java開(kāi)發(fā)者都應(yīng)當(dāng)學(xué)習(xí)并使用Junit編寫(xiě)單元測(cè)試
2、此外,幾乎所有的IDE工具都集成了Junit,這樣我們就可以直接在IDE中編寫(xiě)并運(yùn)行Junit測(cè)試,Junit目前最新版本是5
Junit優(yōu)點(diǎn)
1、Junit可以靈活的選擇執(zhí)行哪些測(cè)試方法,可以一鍵執(zhí)行全部測(cè)試方法
2、Junit可以生成全部方法的測(cè)試報(bào)告
3、Junit可以生成測(cè)試報(bào)告,如果測(cè)試良好則是綠色,如果測(cè)試失敗則是紅色
4、單元測(cè)試中的某個(gè)方法測(cè)試失敗了,不會(huì)影響其他測(cè)試方法的測(cè)試
Junit單元測(cè)試是做什么的?
測(cè)試類(lèi)中的方法的正確性的
單元測(cè)試快速入門(mén)
需求:使用單元測(cè)試進(jìn)行業(yè)務(wù)方法預(yù)期結(jié)果、正確性測(cè)試的快速入門(mén)
分析:
1、將Junit的jar包導(dǎo)入到項(xiàng)目中
IDEA通常整合好了Junit框架,一般不需要導(dǎo)入
如果IDEA沒(méi)有整合好,需要自己手工導(dǎo)入兩個(gè)Junit的jar包到模塊
2、編寫(xiě)測(cè)試方法:該測(cè)試方法必須是公共的無(wú)參數(shù)無(wú)返回值的非靜態(tài)方法
3、在測(cè)試方法上使用@Test注解:標(biāo)注該方法是一個(gè)測(cè)試方法
4、在測(cè)試方法中完成被測(cè)試方法的預(yù)期正確性測(cè)試
5、選中測(cè)試方法,選擇Junit運(yùn)行,如果測(cè)試良好則是綠色,如果測(cè)試失敗,則是紅色
業(yè)務(wù)類(lèi)
//業(yè)務(wù)方法 public class 單元測(cè)試_Junit框架 { public String loginName(String loginName,String passWord){ if("YAn".equals(loginName)&&"123456".equals(passWord)){ return "登錄成功"; }else{ return "登錄失敗,密碼或者用戶名錯(cuò)誤"; } } public void selectName(){ //這里我們故意寫(xiě)一個(gè)bug,方便測(cè)試 System.out.println(10/0); System.out.println("查詢成功!"); } }
測(cè)試方法
import org.junit.Assert; import org.junit.Test; //測(cè)試方法 public class 單元測(cè)試_Junit框架text { /* 測(cè)試方法注意點(diǎn): 1、必須是公開(kāi)的、無(wú)參、無(wú)返回值的方法 2、測(cè)試方法必須使用@Test注解標(biāo)記 */ @Test public void test(){ 單元測(cè)試_Junit框架 t=new 單元測(cè)試_Junit框架(); String ts=t.loginName("YAn","123456"); //進(jìn)行預(yù)期結(jié)果的正確性測(cè)試:斷言 Assert.assertEquals("您的業(yè)務(wù)功能可能出現(xiàn)了問(wèn)題","登錄成功",ts); } @Test public void selectName(){ 單元測(cè)試_Junit框架 ts=new 單元測(cè)試_Junit框架(); ts.selectName(); } }
兩個(gè)測(cè)試方法運(yùn)行后結(jié)果:
如果您的項(xiàng)目被人動(dòng)了,和你的預(yù)期結(jié)果不一樣,則是這樣的:
單元測(cè)試常用注解(博主這里用的是版本4):
業(yè)務(wù)類(lèi)修改一點(diǎn)點(diǎn),讓測(cè)試方法都沒(méi)有bug
//業(yè)務(wù)方法 public class 單元測(cè)試_Junit框架 { public String loginName(String loginName,String passWord){ if("YAn".equals(loginName)&&"123456".equals(passWord)){ return "登錄成功"; }else{ return "登錄失敗,密碼或者用戶名錯(cuò)誤"; } } public void selectName(){ System.out.println(10/2); System.out.println("查詢成功!"); } }
測(cè)試方法
import org.junit.*; //測(cè)試方法 public class 單元測(cè)試_Junit框架text { //修飾實(shí)例方法的 @Before public void Before(){ System.out.println("Before方法運(yùn)行"); } @After public void After(){ System.out.println("After方法運(yùn)行"); } //修飾靜態(tài)方法的 @BeforeClass public static void BeforeClass(){ System.out.println("BeforeClass方法運(yùn)行"); } @AfterClass public static void AfterClass(){ System.out.println("AfterClass方法運(yùn)行"); } /* 測(cè)試方法注意點(diǎn): 1、必須是公開(kāi)的、無(wú)參、無(wú)返回值的方法 2、測(cè)試方法必須使用@Test注解標(biāo)記 */ @Test public void test(){ 單元測(cè)試_Junit框架 t=new 單元測(cè)試_Junit框架(); String ts=t.loginName("YAn","123456"); //進(jìn)行預(yù)期結(jié)果的正確性測(cè)試:斷言 Assert.assertEquals("您的業(yè)務(wù)功能可能出現(xiàn)了問(wèn)題","登錄成功",ts); } @Test public void selectName(){ 單元測(cè)試_Junit框架 ts=new 單元測(cè)試_Junit框架(); ts.selectName(); } }
運(yùn)行結(jié)果:
可以看出最先運(yùn)行的是BeforeClass測(cè)試方法,最后結(jié)束的是AfterClass測(cè)試方法。
先執(zhí)行Before方法,然后運(yùn)行里面的測(cè)試內(nèi)容,再運(yùn)行After方法。
開(kāi)始執(zhí)行的方法:初始化資源
執(zhí)行完之后的方法:釋放資源
以上就是詳解Java單元測(cè)試之Junit框架使用教程的詳細(xì)內(nèi)容,更多關(guān)于Java Junit框架的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
spring boot validation參數(shù)校驗(yàn)實(shí)例分析
這篇文章主要介紹了spring boot validation參數(shù)校驗(yàn),結(jié)合實(shí)例形式分析了spring boot validation進(jìn)行數(shù)據(jù)有效性驗(yàn)證的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11Springboot登錄驗(yàn)證的統(tǒng)一攔截處理的實(shí)現(xiàn)
如果不進(jìn)行統(tǒng)一的攔截處理,每次用戶請(qǐng)求你都要去進(jìn)行用戶的信息驗(yàn)證,所以本文主要介紹了Springboot登錄驗(yàn)證的統(tǒng)一攔截處理的實(shí)現(xiàn),感興趣的可以了解一下,感興趣的可以了解一下2023-09-09基于spring-mvc.xml和application-context.xml的配置與深入理解
這篇文章主要介紹了spring-mvc.xml和application-context.xml的配置與深入解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java編程利用socket多線程訪問(wèn)服務(wù)器文件代碼示例
這篇文章主要介紹了Java編程利用socket多線程訪問(wèn)服務(wù)器文件代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10Springboot快速集成sse服務(wù)端推流(最新整理)
SSE?Server-Sent?Events是一種允許服務(wù)器向客戶端推送實(shí)時(shí)數(shù)據(jù)的技術(shù),它建立在?HTTP?和簡(jiǎn)單文本格式之上,提供了一種輕量級(jí)的服務(wù)器推送方式,通常也被稱為“事件流”(Event?Stream),這篇文章主要介紹了Springboot快速集成sse服務(wù)端推流(最新整理),需要的朋友可以參考下2024-02-02Springboot @WebFilter無(wú)法注入其他Bean的示例問(wèn)題
這篇文章主要介紹了Springboot @WebFilter無(wú)法注入其他Bean的示例問(wèn)題,本文通過(guò)示例代碼給大家分享解決方法,需要的朋友可以參考下2021-09-09java大數(shù)乘法的簡(jiǎn)單實(shí)現(xiàn) 浮點(diǎn)數(shù)乘法運(yùn)算
大數(shù)乘法可以進(jìn)行任意大小和精度的整數(shù)和浮點(diǎn)數(shù)的乘法運(yùn)算, 精確度很高, 可以用作經(jīng)融等領(lǐng)域的計(jì)算,這個(gè)是我看了一些資料, 然后自己整理實(shí)現(xiàn)的,簡(jiǎn)單測(cè)試了一下2014-01-01centos7如何通過(guò)systemctl啟動(dòng)springboot服務(wù)代替java -jar方式啟動(dòng)
這篇文章主要介紹了centos7如何通過(guò)systemctl啟動(dòng)springboot服務(wù)代替java -jar方式啟動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01