欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java程序員如何編寫更好的單元測試?

錢良釵2年前14瀏覽0評論

近段時間,公司預備推動單元測試以提高轉測代碼的質量,借鑒學習一些測試大佬的經驗自己試了一把,小測我在此寫下初寫單元測試的心得,希望能和大家交流交流單元測試技術!

一、概述

1、單元測試(模塊測試)是開發者編寫的一小段代碼,用于檢驗被測代碼的一個很小的、很明確的功能是否正確。

2、一般認為,在結構化程序時代,單元測試所說的單元是指函數,在當今的面向對象時代,單元測試所說的單元是指類。以我的實踐來看,以類作為測試單位,復雜度高,可操作性較差,因此仍然主張以函數作為單元測試的測試單位

3、有一種看法是,只測試類的接口(公有函數),不測試其他函數,從面向對象角度來看,確實有其道理,但是,測試的目的是找錯并最終排錯,因此,只要是包含錯誤的可能性較大的函數都要測試,跟函數是否私有沒有關系

二、單元測試設計思想

1、單元測試可以借鑒類似功能測試的思想來進行設計

2、一個待測試類當作一個功能塊,待測試類當中的方法當作一個小的功能點,

單元測試就理解為對這個待測試方法進行場景設計,編寫代碼,查看執行各場景結果和場景覆蓋率

3、單元測試場景設計可以采用因果分析的方法,將各個參數的組合當作各條件組合,將輸入參數后執行方法的結果當作是各條件組合后的結果

三、單元測試設計(采用因果分析法)

1、確定待測試模塊即建立測試類

Game類及對應的Game測試類


packagetest.testDemo;publicclassGame{publicStringwinGame(intnum1,intnum2){intnum=num1-num2;Stringtxt=null;if(num>0){txt="奪獎成功!";}elseif(num==0){txt="安慰獎!";}else{txt="奪獎失敗!";}returntxt;}}packagetest.testDemo;importstaticorg.junit.Assert.*;importorg.junit.Test;publicclassGameTest{@TestpublicvoidtestWinGame(){fail("Notyetimplemented");}}

2、分析因果條件列出場景并進行用例設計

3、單元測試用例編寫

3.1參數化

3.1.1引入待測試類,定義參數

3.1.2引入注解@RunWith(Parameterized.class)參數化測試類

3.1.3編寫需用到的參數的構造函數

3.1.4編寫參數數據初始化方法


packagetest.testDemo;importjava.util.Arrays;importjava.util.Collection;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.junit.runners.Parameterized;importorg.junit.runners.Parameterized.Parameters;//引入注解@RunWith(Parameterized.class)參數化測試類@RunWith(Parameterized.class)publicclassGameTest{//引入待測試類,定義參數privateGamegame=newGame();privateintnum1;privateintnum2;privateStringexpected;//編寫需用到的參數的構造函數publicGameTest(intnum1,intnum2,Stringexpected){super();this.num1=num1;this.num2=num2;this.expected=expected;}//編寫參數數據初始化方法@ParameterspublicstaticCollection<Object[]>data(){returnArrays.asList(newObject[][]{{2,1,"奪獎成功!"},{2,2,"安慰獎!"},{1,2,"奪獎失敗!"}});}@TestpublicvoidtestWinGame(){}}

3.2編寫單元測試方法

@TestpublicvoidtestWinGame(){Stringtxt=game.winGame(num1,num2);Assert.assertEquals(expected,txt);}

四、執行單元測試用例,檢查覆蓋率,覆蓋率需eclipse中安裝EclEmma插件

1、選中測試類》右鍵選中CoverageAs》JunitTest

2、執行結果如下