複利計算機4.0之再遇JUnit

來源:互聯網
上載者:User

標籤:

複利計算機4.0之再遇JUnit

  • 前言

   雖然之前的複利計算機版本已經嘗試過使用JUnit單元測試,但由於沒有系統性地學習過JUnit的使用,用得並不好,主要問題表現在測試的情境太少,並沒有達到測試所需的全面性,沒能體現JUnit這一神器的精髓所在,為此本版本的複利計算機在JUnit單元測試方面做了一些完善。

  • 原始碼包結構

     

    如所示,我把測試類別統一放在建立的test源碼檔案下(test打錯了,已改),以便和程式碼分離,方便操作。

    細心看你就能發現,test目錄下的包和程式SRC目錄下相應功能的程式碼封裝名一致,這是為了表明測試的模組針對,做法參考自馬士兵老師的教學視頻,應該也算是一種操作規範吧。。。

  • 測試主過程 

本程式的JUnit測試主要應用於兩個方面:

    1. 對邏輯計算的測試--用於對合法的輸入後,對程式計算結果的檢測,測試程式的邏輯計算是否達到了預期效果。

                    下面以複利終額計算的測試為例。

代碼如下:

1 @Test2     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     }

     測試結果如下:

      

      其他邏輯計算模組的測試類別似,就不一一列舉了。

 

2.對操作環境的測試--用於測試各種使用者可能的操作,如各種資料的輸入,以檢測程式對這些操作所做響應是否與預期效果一致。下面再以複利終額計算的測試為例

     測試代碼: 

 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() {//非法操作:終額為負數 9         CalculateService cs = new CalculateService();10         boolean result = cs.calculShichangInput(-200, 0.5, 100);11         assertEquals(false,result);12     }13     @Test14     public void testCalculateInput3() {//利率為負數15         CalculateService cs = new CalculateService();16         boolean result = cs.calculShichangInput(200, -0.5, 100);17         assertEquals(false,result);18     }19     @Test20     public void testCalculateInput4() {//非法操作:利率大於121         CalculateService cs = new CalculateService();22         boolean result = cs.calculShichangInput(200, 2, 100);23         assertEquals(false,result);24     }25     @Test26     public void testCalculateInput5() {//非法操作:本金為負數27         CalculateService cs = new CalculateService();28         boolean result = cs.calculShichangInput(200, 0.5, -100);29         assertEquals(false,result);30     }31     @Test32     public void testCalculateInput6() {//非法操作:本金大於終額33         CalculateService cs = new CalculateService();34         boolean result = cs.calculShichangInput(200, 0.5, 300);35         assertEquals(false,result);36     }

3.測試結果如下:

 

本測試類別雷根據不同情境設計了不同的測試,具體情境請看展示代碼裡的注釋。

   需要注意的是,有的方法測試並不一定以true為正確傳回值,如本程式中的非法輸入攔截功能,在檢測到非法輸入時就應該返回false才是正確的。如所示:

  • 總結 

   JUnit確實是一個很實用的東西,並且很靈活,用法因程式而異,也因人而異,我也只是剛剛接觸,知道的也有限,用得有點生硬但是感覺比上一次用得順手了,以後還得多練習吧。 

  • Github代碼傳送門: 

    請點擊這裡

 

複利計算機4.0之再遇JUnit

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.