Java计算器源码(只实现了加减乘除四种简单的运算):
1 import java.math.BigDecimal;
2 import java.text.Format;
3 public class Caculator {
4 private BigDecimal num1;
5 private BigDecimal num2;
6 private String result;
7
8 public void setNum1(double num1) {
9 this.num1 = new BigDecimal(num1);
10 }
11
12 public void setNum2(double num2) {
13 this.num2 = new BigDecimal(num2);
14 }
15 private double _format(){
16 BigDecimal _num1 = new BigDecimal(result);
17 BigDecimal _num2 = new BigDecimal(1);
18 return _num1.divide(_num2, 5,BigDecimal.ROUND_HALF_UP).doubleValue();
19 }
20 public String getResult() {
21 if(!result.equals("ERROR"))
22 {
23 double _res = _format();
24 if(_res>=Double.MAX_VALUE||_res<=-Double.MAX_VALUE)
25 result = "ERROR";
26 else
27 result = Double.toString(_format());
28 }
29 return result;
30 }
31 public void Add() {
32 BigDecimal _result;
33 _result = num1.add(num2);
34 result = _result.toString();
35 }
36 public void Sub() {
37 BigDecimal _result;
38 _result = num1.subtract(num2);
39 result = _result.toString();
40 }
41 public void Mul() {
42 BigDecimal _result;
43 _result = num1.multiply(num2);
44 result = _result.toString();
45 }
46 public void Div() {
47 BigDecimal _result;
48 if(num2.doubleValue()!=0){
49 _result = num1.divide(num2);
50 result = _result.toString();
51 }
52 else
53 result = "ERROR";
54 }
55 }
设计测试用例:
JUnit测试用例代码:
1 import org.junit.Test; 2 import java.math.BigDecimal; 3 import junit.framework.TestCase; 4 public class caculate_test extends TestCase { 5 private Caculator ca = new Caculator(); 6 protected void setUp() throws Exception { 7 super.setUp(); 8 } 9 @Test 10 public void test_Add() { 11 ca.setNum1(1); 12 ca.setNum2(2); 13 ca.Add(); 14 assertEquals("3.0", ca.getResult()); 15 ca.setNum1(2.4); 16 ca.setNum2(1.2); 17 ca.Add(); 18 assertEquals("3.6", ca.getResult()); 19 ca.setNum1(Double.MAX_VALUE); 20 ca.setNum2(2); 21 ca.Add(); 22 assertEquals("ERROR", ca.getResult()); 23 } 24 @Test 25 public void test_Sub() { 26 ca.setNum1(1); 27 ca.setNum2(2); 28 ca.Sub(); 29 assertEquals("-1.0", ca.getResult()); 30 ca.setNum1(2.4); 31 ca.setNum2(1.2); 32 ca.Sub(); 33 assertEquals("1.2", ca.getResult()); 34 ca.setNum1(-Double.MAX_VALUE); 35 ca.setNum2(2); 36 ca.Sub(); 37 assertEquals("ERROR", ca.getResult()); 38 } 39 @Test 40 public void test_Mul() { 41 ca.setNum1(1); 42 ca.setNum2(2); 43 ca.Mul(); 44 assertEquals("2.0", ca.getResult()); 45 ca.setNum1(2.4); 46 ca.setNum2(1.2); 47 ca.Mul(); 48 assertEquals("2.88", ca.getResult()); 49 ca.setNum1(1.3); 50 ca.setNum2(0); 51 ca.Mul(); 52 assertEquals("0.0", ca.getResult()); 53 ca.setNum1(Double.MAX_VALUE); 54 ca.setNum2(2); 55 ca.Mul(); 56 assertEquals("ERROR", ca.getResult()); 57 } 58 @Test 59 public void test_Div() { 60 ca.setNum1(1); 61 ca.setNum2(2); 62 ca.Div(); 63 assertEquals("0.5", ca.getResult()); 64 ca.setNum1(2.4); 65 ca.setNum2(1.2); 66 ca.Div(); 67 assertEquals("2.0", ca.getResult()); 68 ca.setNum1(1.3); 69 ca.setNum2(0); 70 ca.Div(); 71 assertEquals("ERROR", ca.getResult()); 72 } 73 }
测试结果:
GitHub:https://github.com/TongWee/SoftwareTesting_Caculator/