如何開始用Junit進行單元測試
近段時間,公司預備推動單元測試以提高轉測代碼的質量,借鑒學習一些測試大佬的經驗自己試了一把,小測我在此寫下初寫單元測試的心得,希望能和大家交流交流單元測試技術!
一、概述
1、 單元測試(模塊測試)是開發者編寫的一小段代碼,用於檢驗被測代碼的一個很小的、很明確的功能是否正確。
2、一般認為,在結構化程序時代,單元測試所說的單元是指函數,在當今的面向對象時代,單元測試所說的單元是指類。以我的實踐來看,以類作為測試單位,復雜度高,可操作性較差,因此仍然主張以函數作為單元測試的測試單位
3、有一種看法是,只測試類的接口(公有函數),不測試其他函數,從面向對象角度來看,確實有其道理,但是,測試的目的是找錯並最終排錯,因此,只要是包含錯誤的可能性較大的函數都要測試,跟函數是否私有沒有關系
二、單元測試設計思想
1、單元測試可以借鑒類似功能測試的思想來進行設計
2、一個待測試類當作一個功能塊,待測試類當中的方法當作一個小的功能點,
單元測試就理解為對這個待測試方法進行場景設計,編寫代碼,查看執行各場景結果和場景覆蓋率
3、單元測試場景設計可以采用因果分析的方法,將各個參數的組合當作各條件組合,將輸入參數後執行方法的結果當作是各條件組合後的結果
三、單元測試設計(采用因果分析法)
1、確定待測試模塊即建立測試類
Game類及對應的Game測試類
package test.testDemo; public class Game { public String winGame(intView Codenum1,int num2) { int num=num1-num2; String txt=null; if(num>0) { txt="奪獎成功!"; }else if(num==0) { txt="安慰獎!"; }else { txt="奪獎失敗!"; } return txt; } }
package test.testDemo; import static org.junit.Assert.*;View Codeimport org.junit.Test; public class GameTest { @Test public void testWinGame() { fail("Not yet implemented"); } }
2、分析因果條件列出場景並進行用例設計
3、單元測試用例編寫
3.1 參數化
3.1.1 引入待測試類,定義參數
3.1.2 引入註解@RunWith(Parameterized.class)參數化測試類
3.1.3 編寫需用到的參數的構造函數
3.1.4 編寫參數數據初始化方法
package test.testDemo; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; //引入註解@RunWith(Parameterized.class)參數化測試類 @RunWith(Parameterized.class) public class GameTest { //引入待測試類,定義參數 private Game game=new Game(); private int num1; private int num2; private String expected; //編寫需用到的參數的構造函數 public GameTest(int num1, int num2,String expected) { super(); this.num1 = num1; this.num2 = num2; this.expected=expected; } //編寫參數數據初始化方法 @Parameters public static Collection<Object[]> data(){ return Arrays.asList(new Object[][] {{2,1,"奪獎成功!"},{2,2,"安慰獎!"},{1,2,"奪獎失敗!"}}); } @Test public void testWinGame() { } }View Code
3.2 編寫單元測試方法
@Test public void testWinGame() { String txt=game.winGame(num1, num2); Assert.assertEquals(expected, txt); }View Code
四、執行單元測試用例,檢查覆蓋率,覆蓋率需eclipse中安裝EclEmma插件
1、選中測試類》右鍵選中Coverage As》Junit Test
2、執行結果如下
如何開始用Junit進行單元測試