標籤:
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 單元測試