App下載

java單元測試怎么寫?怎么使用Junit進行單元測試

猿友 2021-06-30 14:28:48 瀏覽數(shù) (8545)
反饋

很多小伙伴在學習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é)果。

所以大部分情況下我們可以把單元測試的代碼分為三塊:

  1. 第一塊代碼負責測試前的數(shù)據(jù)處理,比如輸入數(shù)據(jù)等。
  2. 第二塊代碼負責調(diào)用相關的功能模塊進行測試。
  3. 第三塊代碼負責將測試的結(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)容了,各位讀者是否滿意呢?


1 人點贊