测试要求:
对我们和复利计算程序,写单元测试。
有哪些场景?
期待的返回值
写测试程序。
运行测试。
1.源代码:https://github.com/rongjielong/rongjielong/blob/master/calculate/src/exercise.java
2.测试代码:https://github.com/rongjielong/rongjielong/tree/master/calculate/src/test
3.测试示例:
测试模块 |
测试输入 |
预期结果 |
运行结果 |
bug跟踪 |
计算终值 |
(本金,年限,利率) |
终值 |
||
单利:1150 | (1000, 5, 0.03) | 1150 | √ |
|
(0,10,0.05) | 请输入您想要存储的金额数量: | 没有提示,显示0 |
已改进。弹出提示:请输入您想要存储的金额数量: | |
(aaa,3,0.23) | 请输入您想要存储的金额数量: | 出错。出现乱码异常 | 已改进。弹出提示:请输入您想要存储的金额数量: | |
(-10000,10,22) | 请输入您想要存储的金额数量: | 出错。出现负数 | 已改进。弹出提示:请输入您想要存储的金额数量: | |
(1000,-2,0.5) | 请输入您想要存储金额的时间(年): | 出错。显示负数 | 已改进。弹出提示:请输入您想要存储金额的时间(年): | |
(3000,abc,0.2) | 请输入您想要存储金额的时间(年): | 出错。数据异常 | 已改进。弹出提示:请输入您想要存储金额的时间(年): | |
(5000,10,-1) | 请输入您想要设计的年利率: | 出错。出现负数 | 已改进。弹出提示:请输入您想要设计的年利率: | |
(2000,3,klp) | 请输入您想要设计的年利率: | 出错。数据异常 | 已改进。弹出提示:请输入您想要设计的年利率: | |
计算本金 |
(终值,年限,利率) |
本金 | ||
单利:7692.30 | (10000,5,0.06) | 7692.30 | √ | |
(0,4,0.11) | 请输入您想要筹到的金额: | 没有提示,显示0 | 已改进。弹出提示:请输入您想要筹到的金额: | |
(-5000,4,0.11) | 请输入您想要筹到的金额: | 显示-3472.22 | 已改进。弹出提示:请输入您想要筹到的金额: | |
(ddd,10,9) | 请输入您想要筹到的金额: | 显示数据异常 | 已改进。弹出提示:请输入您想要筹到的金额: | |
(500,-2,0.2) | 请输入您想要存储金额的时间(年): | 显示负数 | 已改进。弹出提示:请输入您想要存储金额的时间(年): | |
(500,hlpo,0.3) | 请输入您想要存储金额的时间(年): | 数据异常 | 已改进。弹出提示:请输入您想要存储金额的时间(年): | |
(500,2,-2) | 请输入您想要设计的年利率: | 出现负数 | 已改进。弹出提示:请输入您想要设计的年利率: | |
(500,3,rrhh) | 请输入您想要设计的年利率: | 数据异常 | 已改进。弹出提示:请输入您想要设计的年利率: |
(1)判断输入是否正确:
1 package test;
2
3
4 public class A {
5 boolean test1(int select){
6
7 System.out.println("请问您想要进行单利计算还是复利计算:1.单利 2.复利");
8 if(select != 1 && select != 2)
9 return false;
10 else
11 return true;
12
13 }
14 }
1 package test;
2
3 import static org.junit.Assert.*;
4
5 import org.junit.Before;
6 import org.junit.Test;
7
8 public class ATest {
9 A a1=new A();
10 @Before
11 public void setUp() throws Exception {
12 }
13
14 @Test
15 public void test() {
16
17 assertTrue (a1.test1(2));
18 }
19
20 }
(2)判断数据计算是否正确:
1 package test;
2
3 public class E {
4 public double test5(double sumValue,double rate,int year){
5 for (int i = 1; i <= year; i++) {
6 sumValue = sumValue / (1 + rate);
7
8 }
9 double originalMoney = sumValue;
10 System.out.println("需要本金" + originalMoney + "元");
11 return originalMoney;
12 }
13
14 }
1 package test;
2
3 import static org.junit.Assert.*;
4
5 import org.junit.Before;
6 import org.junit.Test;
7
8 public class ETest {
9 E e1=new E();
10 @Before
11 public void setUp() throws Exception {
12 }
13
14 @Test
15 public void test() {
16 assertEquals(86383.76,e1.test5(100000, 0.05, 3),0.05);
17 }
18
19 }
其余测试代码详情请点击:https://github.com/rongjielong/rongjielong/tree/master/calculate/src/test
测试总结:
第一次用到Junit测试,虽然不是很了解,但是也体会到它的好处。Junit里面提供了比较多的方法,需要我们逐一揣摩。通过单元测试,我发现自己原来写的代码比较乱,没什么条理,原来的代码是将整个程序写在一个方法里,测试起来很不方便,怪不得提倡要分开java类以及提取方法的方式开发软件了,所以我在测试过程中拆分了自己原来的代码,分成了几个类以及几个方法,逐一测试。并且,在测试过程中,发现程序会发生异常,例如,int year;当我们输入浮点型数据或者英文字母或者其他的非整形数据,那么我们的实际结果就与预期结果不一致,从而引发错误。因此,单元测试的确是一个自我发现bug的好方法。