您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
復(fù)利計算器4.0之再遇JUnit
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2016/6/23 14:24:03 ] 推薦標(biāo)簽:單元測試 軟件測試工具

  前言
  雖然之前的復(fù)利計算器版本已經(jīng)嘗試過使用JUnit單元測試,但由于沒有系統(tǒng)性地學(xué)習(xí)過JUnit的使用,用得并不好,主要問題表現(xiàn)在測試的場景太少,并沒有達(dá)到測試所需的全面性,沒能體現(xiàn)JUnit這一神器的精髓所在,為此本版本的復(fù)利計算器在JUnit單元測試方面做了一些完善。
  源代碼包結(jié)構(gòu)

  如上圖所示,我把測試類統(tǒng)一放在新建的test源碼文件下(test打錯了,已改),以便和程序代碼分離,方便操作。
  細(xì)心看你能發(fā)現(xiàn),test目錄下的包和程序SRC目錄下相應(yīng)功能的代碼包名一致,這是為了表明測試的模塊針對,做法參考自馬士兵老師的教學(xué)視頻,應(yīng)該也算是一種操作規(guī)范吧。。。
  測試主過程
  本程序的JUnit測試主要應(yīng)用于兩個方面:
  1、對邏輯計算的測試--用于對合法的輸入后,對程序計算結(jié)果的檢測,測試程序的邏輯計算是否達(dá)到了預(yù)期效果。
  下面以復(fù)利終額計算的測試為例。
  代碼如下:
1 @Test
2     public void testCalculate() {
3         boolean result = false;
4         CalculateService cs = new CalculateService();
5         double test = cs.calculateBenjin(2000000,0.03,10);
6         if(test == 1488187.82979345) result = true;
7         assertEquals(true,result);
8     }
  測試結(jié)果如下:

  其他邏輯計算模塊的測試類似,不一一列舉了。
  2.對操作場景的測試--用于測試各種用戶可能的操作,如各種數(shù)據(jù)的輸入,以檢測程序?qū)@些操作所做響應(yīng)是否與預(yù)期效果一致。下面再以復(fù)利終額計算的測試為例
  測試代碼:
1 @Test
2     public void testCalculateInput1() {//合法輸入
3         CalculateService cs = new CalculateService();
4         boolean result = cs.calculShichangInput(200, 0.5, 100);
5         assertEquals(true,result);
6     }
7     @Test
8     public void testCalculateInput2() {//非法操作:終額為負(fù)數(shù)
9         CalculateService cs = new CalculateService();
10         boolean result = cs.calculShichangInput(-200, 0.5, 100);
11         assertEquals(false,result);
12     }
13     @Test
14     public void testCalculateInput3() {//利率為負(fù)數(shù)
15         CalculateService cs = new CalculateService();
16         boolean result = cs.calculShichangInput(200, -0.5, 100);
17         assertEquals(false,result);
18     }
19     @Test
20     public void testCalculateInput4() {//非法操作:利率大于1
21         CalculateService cs = new CalculateService();
22         boolean result = cs.calculShichangInput(200, 2, 100);
23         assertEquals(false,result);
24     }
25     @Test
26     public void testCalculateInput5() {//非法操作:本金為負(fù)數(shù)
27         CalculateService cs = new CalculateService();
28         boolean result = cs.calculShichangInput(200, 0.5, -100);
29         assertEquals(false,result);
30     }
31     @Test
32     public void testCalculateInput6() {//非法操作:本金大于終額
33         CalculateService cs = new CalculateService();
34         boolean result = cs.calculShichangInput(200, 0.5, 300);
35         assertEquals(false,result);
36     }
  3.測試結(jié)果如下:

  本測試類里根據(jù)不同場景設(shè)計了不同的測試,具體場景請看展示代碼里的注釋。
  需要注意的是,有的方法測試并不一定以true為正確返回值,如本程序中的非法輸入攔截功能,在檢測到非法輸入時應(yīng)該返回false才是正確的。如下圖所示:

  總結(jié)
  JUnit確實是一個很實用的東西,并且很靈活,用法因程序而異,也因人而異,我也只是剛剛接觸,知道的也有限,用得有點生硬但是感覺比上一次用得順手了,以后還得多練習(xí)吧。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd