詳解Java單元測試之Junit框架使用教程
單元測試
單元測試就是針對最小的功能單元編寫測試代碼,Java程序最小的功能單元是方法,因此,單元測試就是針對Java方法的測試,進而檢查方法的正確性
目前測試方法是怎么進行的,存在什么問題?
1、只有一個main方法,如果一個方法的測試失敗了,其他方法測試會受到影響
2、無法得到測試的結(jié)果報告,需要程序員自己去觀察測試是否成功
3、無法實現(xiàn)自動化測試
Junit單元測試框架
1、Junit是使用Java語言實現(xiàn)的單元測試框架,它是開源的,Java開發(fā)者都應(yīng)當(dāng)學(xué)習(xí)并使用Junit編寫單元測試
2、此外,幾乎所有的IDE工具都集成了Junit,這樣我們就可以直接在IDE中編寫并運行Junit測試,Junit目前最新版本是5
Junit優(yōu)點
1、Junit可以靈活的選擇執(zhí)行哪些測試方法,可以一鍵執(zhí)行全部測試方法
2、Junit可以生成全部方法的測試報告
3、Junit可以生成測試報告,如果測試良好則是綠色,如果測試失敗則是紅色
4、單元測試中的某個方法測試失敗了,不會影響其他測試方法的測試
Junit單元測試是做什么的?
測試類中的方法的正確性的
單元測試快速入門
需求:使用單元測試進行業(yè)務(wù)方法預(yù)期結(jié)果、正確性測試的快速入門
分析:
1、將Junit的jar包導(dǎo)入到項目中
IDEA通常整合好了Junit框架,一般不需要導(dǎo)入
如果IDEA沒有整合好,需要自己手工導(dǎo)入兩個Junit的jar包到模塊
2、編寫測試方法:該測試方法必須是公共的無參數(shù)無返回值的非靜態(tài)方法
3、在測試方法上使用@Test注解:標(biāo)注該方法是一個測試方法
4、在測試方法中完成被測試方法的預(yù)期正確性測試
5、選中測試方法,選擇Junit運行,如果測試良好則是綠色,如果測試失敗,則是紅色
業(yè)務(wù)類
//業(yè)務(wù)方法
public class 單元測試_Junit框架 {
public String loginName(String loginName,String passWord){
if("YAn".equals(loginName)&&"123456".equals(passWord)){
return "登錄成功";
}else{
return "登錄失敗,密碼或者用戶名錯誤";
}
}
public void selectName(){
//這里我們故意寫一個bug,方便測試
System.out.println(10/0);
System.out.println("查詢成功!");
}
}
測試方法
import org.junit.Assert;
import org.junit.Test;
//測試方法
public class 單元測試_Junit框架text {
/*
測試方法注意點:
1、必須是公開的、無參、無返回值的方法
2、測試方法必須使用@Test注解標(biāo)記
*/
@Test
public void test(){
單元測試_Junit框架 t=new 單元測試_Junit框架();
String ts=t.loginName("YAn","123456");
//進行預(yù)期結(jié)果的正確性測試:斷言
Assert.assertEquals("您的業(yè)務(wù)功能可能出現(xiàn)了問題","登錄成功",ts);
}
@Test
public void selectName(){
單元測試_Junit框架 ts=new 單元測試_Junit框架();
ts.selectName();
}
}
兩個測試方法運行后結(jié)果:

如果您的項目被人動了,和你的預(yù)期結(jié)果不一樣,則是這樣的:

單元測試常用注解(博主這里用的是版本4):

業(yè)務(wù)類修改一點點,讓測試方法都沒有bug
//業(yè)務(wù)方法
public class 單元測試_Junit框架 {
public String loginName(String loginName,String passWord){
if("YAn".equals(loginName)&&"123456".equals(passWord)){
return "登錄成功";
}else{
return "登錄失敗,密碼或者用戶名錯誤";
}
}
public void selectName(){
System.out.println(10/2);
System.out.println("查詢成功!");
}
}
測試方法
import org.junit.*;
//測試方法
public class 單元測試_Junit框架text {
//修飾實例方法的
@Before
public void Before(){
System.out.println("Before方法運行");
}
@After
public void After(){
System.out.println("After方法運行");
}
//修飾靜態(tài)方法的
@BeforeClass
public static void BeforeClass(){
System.out.println("BeforeClass方法運行");
}
@AfterClass
public static void AfterClass(){
System.out.println("AfterClass方法運行");
}
/*
測試方法注意點:
1、必須是公開的、無參、無返回值的方法
2、測試方法必須使用@Test注解標(biāo)記
*/
@Test
public void test(){
單元測試_Junit框架 t=new 單元測試_Junit框架();
String ts=t.loginName("YAn","123456");
//進行預(yù)期結(jié)果的正確性測試:斷言
Assert.assertEquals("您的業(yè)務(wù)功能可能出現(xiàn)了問題","登錄成功",ts);
}
@Test
public void selectName(){
單元測試_Junit框架 ts=new 單元測試_Junit框架();
ts.selectName();
}
}
運行結(jié)果:
可以看出最先運行的是BeforeClass測試方法,最后結(jié)束的是AfterClass測試方法。
先執(zhí)行Before方法,然后運行里面的測試內(nèi)容,再運行After方法。
開始執(zhí)行的方法:初始化資源
執(zhí)行完之后的方法:釋放資源

以上就是詳解Java單元測試之Junit框架使用教程的詳細內(nèi)容,更多關(guān)于Java Junit框架的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java+SQL server2008學(xué)生信息管理系統(tǒng)源碼
這篇文章主要為大家詳細介紹了java+SQL server2008學(xué)生信息管理系統(tǒng)源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
Java并發(fā)編程之ConcurrentLinkedQueue解讀
這篇文章主要介紹了Java并發(fā)編程之ConcurrentLinkedQueue解讀,非阻塞的實現(xiàn)方式則可以使用循環(huán)CAS的方式來實現(xiàn),而ConcurrentLinkedQueue就是juc包中自帶的經(jīng)典非堵塞方式實現(xiàn)的工具類,需要的朋友可以參考下2023-12-12
解決多模塊項目中Mybatis的Mapper內(nèi)部方法找不到的問題
這篇文章主要介紹了解決多模塊項目中Mybatis的Mapper內(nèi)部方法找不到的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Java redis存Map對象類型數(shù)據(jù)的實現(xiàn)
本文主要介紹了Java redis存Map<String,RedisCustom>對象類型數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05

