单元测试:复利计算
对我们和复利计算程序,写单元测试。
有哪些场景?
期待的返回值
写测试程序。
运行测试。
测试模块 |
测试输入 |
预期结果 |
运行结果 |
bug跟踪 |
计算终值 |
(本金,年限,利率) |
终值 |
||
1 |
(1000000, 30, 0.03) |
2427262.471189663 |
√ |
|
2 |
(-1000000, 30, 0.03) |
弹出提示:请输入>0的本金 |
√ |
|
3 |
(1000000, -30, 0.03) |
弹出提示:请输入>0的存钱年数 |
√ |
|
4 |
(1000000, 30, -0.03) | 弹出提示:请输入>0的利率 | √ |
5 | (1000000, 30, 3) | 弹出提示:请输入<1的利率 | √ |
计算本金 |
(年限,利率,终值) |
本金 |
||
1 |
(30, 0.03,3000000) |
1235960.278547719 |
√ |
一、测试用户的合法输入和非法输入:
@Test public void testInput0(){//合法输入 Calculate5 a = new Calculate5(); boolean result = a.Input(1000000, 30, 0.03); Assert.assertEquals(true,result); } @Test public void testInput1(){//非法输入,本金是负数 Calculate5 a = new Calculate5(); boolean result = a.Input(-1000000, 30, 0.03); Assert.assertEquals(false,result); } @Test public void testInput2(){//非法输入,存钱年数是负数 Calculate5 a = new Calculate5(); boolean result = a.Input(1000000, -30, 0.03); Assert.assertEquals(false,result); } @Test public void testInput3(){//非法输入,利率是负数 Calculate5 a = new Calculate5(); boolean result = a.Input(1000000, 30, -0.03); Assert.assertEquals(false,result); } @Test public void testInput4(){//非法输入,利率大于一 Calculate5 a = new Calculate5(); boolean result = a.Input(1000000, 30, 3); Assert.assertEquals(false,result); }
二、测试计算公式是否正确:
@Test public void test0() {//测单利终值 double money=1000000.0; int years=30; double r=0.03; double sum; sum = money + money * years * r; Assert.assertEquals(1900000,sum, 1.0);
System.out.println("单利终值为:" + sum);
}
@Test public void test1(){//测复利终值 double money=1000000.0; int years=30; double r=0.03; double N=1; double sum; for (int i = 1; i <= years; i++) { N = (1 + r) * N; } sum = N * money; Assert.assertEquals(2427262,sum, 1.0);
System.out.println("复利终值为:" + sum);
} @Test public void test2(){//测本金 double N = 1, money; double sum=3000000; int years=30; double r=0.03; for (int i = 1; i <= years; i++) { N = (1 + r) * N; } money = sum / N; Assert.assertEquals(1235960,money, 1.0);
System.out.println("应投入的本金为:" + money);
}