很多小伙伴在學習java的過程中會了解到單元測試這一概念。在java編程中,合理的利用單元測試,可以讓開發(fā)更加高效。java最常見的單元測試框架是xUnit家族的Junit,今天我們就簡單的介紹一下Junit的使用,順便學習一下java單元測試怎么寫吧!
Junit引入
Junit并不是java自帶的包,在使用的時候要引入第三方jar包。相關?jar
?包可以前往Junit官網(wǎng)進行下載和學習。
Junit官網(wǎng):https://junit.org/junit4/
也可以使用maven進行項目管理,使用maven進行Junit包的引入(下方代碼為某版本的Junit的依賴引用):
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
最后,有些IDE在創(chuàng)建項目的時候會自行導入Junit包(或者可以通過設置導入Junit包,比如eclipse),這些IDE在創(chuàng)建項目的時候會把?src
?文件夾分成兩個文件夾,一個為?main
?,一個為?test
?,這樣就可以直接在test文件夾直接寫Junit測試代碼了。
如何寫單元測試代碼
單元測試代碼可以簡單的分成三步,分別為?Given
?,?When
?,?Then
?。?Given
?代表初始狀態(tài)或者前置條件(可以簡單的理解為數(shù)據(jù)輸入);?When
?代表行為發(fā)生,也就是進行測試動作;Then
?則是斷言結(jié)果。
所以大部分情況下我們可以把單元測試的代碼分為三塊:
- 第一塊代碼負責測試前的數(shù)據(jù)處理,比如輸入數(shù)據(jù)等。
- 第二塊代碼負責調(diào)用相關的功能模塊進行測試。
- 第三塊代碼負責將測試的結(jié)果與我們期待的結(jié)果進行比對,從而得出測試結(jié)果(通過或者失敗)。
代碼實戰(zhàn)
以一個簡單的計算器類為例,以下是這個計算器類的方法:
public class Calculator {
public static int add(int x ,int y){
return x+y;
}
public static int substract(int x, int y){
return x-y;
}
public static float divide(int x,int y){
return x/y;
}
}
我們設計了一些簡單的測試代碼(代碼解讀詳見注釋):
import org.junit.Assert;
import org.junit.Test;
public class CalculatorTest {
@Test //使用test注解,注解下的方法為測試代碼
public void testAdd() {
//我們要測的是一個add函數(shù),他傳入兩個int參數(shù)
int x=2,y=3;//輸入數(shù)據(jù)
int res = Calculator.add(x,y);//將數(shù)據(jù)傳遞給被測函數(shù),然后將返回結(jié)果存在res中
Assert.assertEquals(res ,5);//使用斷言判斷res的值是否等于期待的值(這里期待為5)
//如果res的值等于期待的值,則測試通過,反之測試失敗
}
@Test
public void testSubstract() {
//這是另一個測試代碼,使用簡寫的方式,將第一二步合在一起
int res =Calculator.substract(5,3);
Assert.assertEquals(res ,3);
}
}
以上代碼只是用來介紹如何使用Junit,測試用例設計得比較隨意。實際上測試用例設計需要考慮很多,要通過測試用例來證明目標代碼的功能健全,所以對于一個簡單的相加函數(shù)而言,這樣的測試用例略顯簡單了。詳細的測試用例設計小編以后會繼續(xù)分享,關注W3C技術頭條,學習如何編寫更好的測試用例!
小結(jié)
對于初學者而言,以上簡單的測試案例已經(jīng)足夠入門了。但實際上在測試的過程中還會遇到很多對功能的要求,比如說功能代碼的執(zhí)行速度是否符合要求;如何聚合測試;代碼拋出異常如何跳過等等,這些都是Junit的學習內(nèi)容,而對于完整的Junit學習,一篇文章是講不完的,所以小編后續(xù)也會根據(jù)Junit的部分功能進行逐一介紹。同時也可以前往Junit教程進行學習。以上就是java單元測試怎么寫的全部內(nèi)容了,各位讀者是否滿意呢?