zoukankan      html  css  js  c++  java
  • 复利计算器单元测试

    针对复利计算器的单元测试程序

    单元测试场景:

      1.测试计算公式是否正确

      2.测试用户输入非法字符

      3.测试输入为空

      4.测试输入字符串长度为0

      5.测试输入为负数

    详细源程序:https://github.com/425221830/CompoundInterestCalculator

    单元测试代码

    package pers.xisven.test;
    
    import static org.junit.Assert.*;
    
    import org.junit.Test;
    
    import pers.xisven.cic.Calculate;
    
    public class CalculateTest {
        String p = "10000";//P:本金
        String i = "0.030";//I:利率
        String n = "30";//N:存入年限
        String c = "1";//C: 年复利次数
        String f = "0";//F:复利终值
    
        @Test
        //测试求复利公式
        public void testCalculateCompoundInterest() {
            assertEquals(new Calculate(p, i, n, c, f).calculateCompoundInterest(), "24272.6247");
        }
        @Test
        //测试求单利公式
        public void testCalculateSimpleInterest() {
            assertEquals(new Calculate(p, i, n, c, f).calculateSimpleInterest(), "19000.0000");
        }
        @Test
        //测试求利率
        public void testCalculateI() {
            assertEquals(new Calculate("1000", null, "5", "1", "1200").calculateI(), ".0371");
        }
        @Test
        //测试求本金
        public void testCalculatePrincipal() {
            assertEquals(new Calculate(null, "0.03", "10", "1", "50000").calculatePrincipal(), "37204.6957");
        }
        @Test
        //测试求时间公式
        public void testCalculateYears() {
            assertEquals(new Calculate("30000", "0.03", null, "1", "50000").calculateYears(), "18");
        }
        @Test
        //测试求回报公式
        public void testCalculateInvestment() {
            assertEquals(new Calculate("20000", "0.025", "10", null, null).calculateInvestment(), "229669.3262");
        }
        @Test
        //测试求还款公式
        public void testCalculateRepayment() {
            assertEquals(new Calculate("1000000", "0.0325", "10", null, null).calculateRepayment(), "9771.9029");
        }
        @Test
        //测试输入非法字符
        public void testCalculateinput() {
            p = "adff";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        public void testCalculateinput2() {
            i = "1.2";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        public void testCalculateinput3() {
            n = "10.5";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        public void testCalculateinput4() {
            c = "1.5";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        //测试输入为负数
        public void testCalculateinput5() {
            p = "-1000";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        //测试输入为空
        public void testCalculateCompoundInterest3() {
            p = null;
            assertTrue(new Calculate(p, i, n, c, f).getPrincipal()==0);
        }
        @Test
        //测试字符串长度为0
        public void testCalculateCompoundInterest4() {
            p = "";
            assertTrue(new Calculate(p, i, n, c, f).getPrincipal()==0);
        }    
        
    }
        @Test
        //测试TryCatch
        public void testTryCatch() {
            assertEquals(new Calculate(p, i, n, c, f).testTryCatch(p), false);
        }    

    更新测试TryCatch仅测试一项,其他语句类似

    发现问题:

      在利率计算方法中返回值不完整只能输出“.xxx”而不是“0.xxx”

    原因:

      在保留小数位数时仅考虑到大于1的情况

    改进:

    //求利率返回值修改如下,为保证返回字符串为完整的小数
    return new DecimalFormat("0.0000").format(i);

    改进后

    测试结果均符合预期

    更新为15个测试

    总结:

      编写Calculate类时利用 try {} catch () {} 语句检测错误进行异常处理

      在测试类中利用匿名类调用方法进行判断测试结果

      在测试判断时要注意方法的返回值类型和预期结果的类型相符

      发现在利率计算方法中返回值不完整只能输出“.xxx”而不是“0.xxx”的问题,查询资料学习DecimalFormat()方法的一些用法

  • 相关阅读:
    统计学六:逻辑回归
    数据分析五:因子分析
    统计学四:聚类分析
    统计学三:线性回归
    统计学二:假设检验与参数估计
    统计学一:描述统计
    数据分析十:高价值用户识别
    数据分析九:互联网征信中的信用评分模型(用户APP使用行为分析)
    数据分析八:互联网征信中的信用评分模型(刷卡行为分析)
    数据分析七:数据治理
  • 原文地址:https://www.cnblogs.com/xiseven/p/5332476.html
Copyright © 2011-2022 走看看