标签:
——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 }
用来测试的类
下面进行单元测试
首先要在该工程下导入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 lendoon 11 *CalcFunction类是Calc类的功能类, 12 *Calc的UI输入中缀表达式调用CalcFunction的静态Evaluate方法计算返回结果 13 */ 14 public class CalcFunctionTest { 15 16 @Test 17 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 @Test 24 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 @Test 31 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 @Test 38 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 }
Run As -> JUnit Test,结果如图:
测试显示绿色的对号是通过的,显示蓝色叉号的,表示没通过failure。如图中的testEvaluate_cos测试方法。
运行失败,进度条会变成红褐色的,失败有两种情况:
处理结果与预期的有偏差(failure) 和 处理结果时,则直接抛出了异常——测试错误(error)
如图:测试失败的两种情况
全部测试成功时,进度条是绿色的:
JUnit 最佳实践测试任何可能的错误。单元测试不是用来证明您是对的,而是为了证明您没有错。
标签:
原文地址:http://www.cnblogs.com/lendoon/p/4467846.html