JUnit 4 單元測試

來源:互聯網
上載者:User

標籤:

Individual Project

          ——JUnit 4 單元測試

 

 

  學習到JUnit單元測試,我拿來測試之前寫過的一個計算機(兩個依存類:Calc.java CalcFunction.java)。代碼已放到github中。

貼出部分代碼:

 1 public class Calc extends javax.swing.JFrame{ 2  3         public Calc() { 4             initComponents(); 5         } 6  7         private void initComponents() { 8             java.awt.GridBagConstraints gridBagConstraints; 9 10             setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);11             setTitle("\u8ba1\u7b97\u5668");12             setBounds(new java.awt.Rectangle(500, 50, 0, 0));13             setResizable(false);14 15                         ···//介面布局16 17                 }18                 //主要監聽19         ActionListener listenerEquals = new ActionListener() {20             public void actionPerformed(ActionEvent e) {21                 formulaStand.setText(edit + "=");22                 hasPoint = false;23                 String result;24                 try {25                     result = CalcFunction.Evaluate(edit+"=");26                 } catch (Exception e1) {27                     result = "syntax error";28                 }29                 if (Double.parseDouble(result)%1 == 0) {30                     editStand.setText(String.valueOf((int)Double.parseDouble((result))));31                 }else{32                     editStand.setText(String.valueOf((float)Double.parseDouble((result))));33                 }34                 edit = "0";35             }36         }; 37 }
Calc.java

 用來測試的類

CalcFunction.java

 

  下面進行單元測試

首先要在該工程下匯入JUnit庫 具體做法:Build Path -> Config Build Path ... -> Add Libraries ... 選中JUnit Next-> 選擇JUnit 4 Finished 

添加完成

建立測試案例  

 new -> Java Test Case  Name:CalcFunctionTest Next-> 選擇要測試的方法

自動產生一個測試類別CalcFunctionTest,裡麵包含一些空的測試案例,@Test 註解的。只需要將這些測試案例稍作修改即可使用。完整的CalcFunctionTest代碼如下:

 1 package com.school.indivodial; 2  3 import static org.junit.Assert.*; 4  5 import org.junit.Before; 6 import org.junit.Test; 7  8 /** 9  * 10  * @author lendoon11  *CalcFunction類是Calc類的功能類,12  *Calc的UI輸入中綴運算式調用CalcFunction的靜態Evaluate方法計算返回結果13  */14 public class CalcFunctionTest {15     16     @Test17     public void testEvaluate_basic() throws Exception {18         Double expectedAnswer = Double.valueOf("90");19         Double actualAnswer = Double.valueOf(CalcFunction.Evaluate("100-(22+6×3)÷4="));20         assertEquals(expectedAnswer, actualAnswer);21     }22 23     @Test24     public void testEvaluate_pow() throws Exception{25         Double expectedAnswer = Double.valueOf("1024");26         Double actualAnswer = Double.valueOf(CalcFunction.Evaluate("2^10="));27         assertEquals(expectedAnswer, actualAnswer);28     }29     30     @Test31     public void testEvaluate_sqrt() throws Exception{32         Double expectedAnswer = Double.valueOf("8");33         Double actualAnswer = Double.valueOf(CalcFunction.Evaluate("√64="));34         assertEquals(expectedAnswer, actualAnswer);35     }36     37     @Test38     public void testEvaluate_cos() throws Exception{39         Double expectedAnswer = Double.valueOf("1");40         Double actualAnswer = Double.valueOf(CalcFunction.Evaluate("COS(0)="));41         assertEquals(expectedAnswer, actualAnswer);42     }43 }
CalcFunctionTest.java

Run As -> JUnit Test,結果

 

 測試顯示綠色的對號是通過的,顯示藍色叉號的,表示沒通過failure。中的testEvaluate_cos測試方法。

 

運行失敗,進度條會變成紅褐色的,失敗有兩種情況:

處理結果與預期的有偏差(failure) 和  處理結果時,則直接拋出了異常——測試錯誤(error)

測試失敗的兩種情況 

 

 全部測試成功時,進度條是綠色的:

 

 JUnit 最佳實務測試任何可能的錯誤。單元測試不是用來證明您是對的,而是為了證明您沒有錯。

 

 

 

JUnit 4 單元測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.