Junit自動單元測試以及測試覆蓋率簡單使用
阿新 • • 發佈:2019-02-08
前言
眾所周知,測試對於一個工程而言是至關重要的,而現在絕大多數團隊都配有專門的測試人員來使用各種工具進行專業的測試,這裡介紹的Junit的更多是作為開發同學在開發過程或最後提供自測的工具,使用起來非常方便,並且可以提供出測試覆蓋率,以及具體沒有覆蓋的程式碼。
下面還是使用Idea做為演示IDE,使用Eclipse或者其他IDE的同學請自行搜尋搭建方式,應該都是大同小異。
這裡網上有很多詳細的使用方法,是作為Junit框架來講解的,看起來是更適合於測試同學,對我來說,只希望使用Junit來做簡單的關鍵方法的自測,所以比較隨意。
環境準備
依賴:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12 </version>
<scope>test</scope>
</dependency>
用法
假如你想測試Account類中扣款方法pay()有沒有正常執行。
Account:
public class Account {
private int balance;
public Boolean pay(int money){
if(balance >= money) {
balance -= money;
return true;
}else
return false;
}
public void charge(int money){
this.balance += money;
}
public int getBalance() {
return balance;
}
}
在測試路徑下(建議將測試類單獨放在測試的包路徑下)新建一個測試類,測試類可以這麼寫:
public class AccountTest {
private Account account = new Account();
//@Test就是Junit測試的註解
@Test
public void testAccount(){
//Assert.assertEquals前面為期望值,後面為實際值,用來驗證資料是否符合預期
Assert.assertEquals(0,account.getBalance());
account.charge(100);
Assert.assertEquals(100,account.getBalance());
Assert.assertEquals(true,account.pay(20));
Assert.assertEquals(80,account.getBalance());
Assert.assertEquals(false,account.pay(100));
}
}
然後不需要main函式可以直接執行:
如果是綠色沒有報錯就代表測試通過
批量測試以及測試覆蓋率
Idea右上角的Edit Configurations
新建一個Junit測試,Test kind可以選擇類,還是整個包路徑,我這裡選了整個包,然後選好工程。
然後在Code Coverager選項卡,。Tracin模式會增加消耗,但測量會更精確。然後新增測試類想要覆蓋的被測試程式碼路徑
都配置好後,通過右上角的Run With Coverage來執行
結果如下:
右邊會出現測試覆蓋率的結果,類左邊的顏色代表了測試結果,沒有被測試覆蓋到的程式碼都將高亮顯示為紅色,覆蓋的程式碼顏色則是綠色,如果一些程式碼是隻覆蓋部分,那沒將顯示為黃色。
總結
通過自動化Junit單元測試,可以讓開發更好的完成自測,提高程式碼質量,也讓專案流程推進更加清晰快速,希望大家都養成寫單元測試的習慣。