复利计算器4.0之再遇JUnit

前言

虽然之前的复利计算器版本已经尝试过使用JUnit单元测试,但由于没有系统性地学习过JUnit的使用,用得并不好,主要问题表现在测试的场景太少,并没有达到测试所需的全面性,没能体现JUnit这一神器的精髓所在,为此本版本的复利计算器在JUnit单元测试方面做了一些完善。

源代码包结构

如上图所示,我把测试类统一放在新建的test源码文件下(test打错了,已改),以便和程序代码分离,方便操作。

细心看你就能发现,test目录下的包和程序SRC目录下相应功能的代码包名一致,这是为了表明测试的模块针对,做法参考自马士兵老师的教学视频,应该也算是一种操作规范吧。。。

测试主过程

本程序的JUnit测试主要应用于两个方面:

对逻辑计算的测试--用于对合法的输入后,对程序计算结果的检测,测试程序的逻辑计算是否达到了预期效果。

下面以复利终额计算的测试为例。

代码如下:

@Test

public void testCalculate() {

boolean result = false;

CalculateService cs = new CalculateService();

double test = cs.calculateBenjin(2000000,0.03,10);

if(test == 1488187.82979345) result = true;

assertEquals(true,result);

}

测试结果如下:

其他逻辑计算模块的测试类似,就不一一列举了。

2.对操作场景的测试--用于测试各种用户可能的操作,如各种数据的输入,以检测程序对这些操作所做响应是否与预期效果一致。下面再以复利终额计算的测试为例

测试代码:

@Test

public void testCalculateInput1() {//合法输入

CalculateService cs = new CalculateService();

boolean result = cs.calculShichangInput(200, 0.5, 100);

assertEquals(true,result);

}

@Test

public void testCalculateInput2() {//非法操作:终额为负数

CalculateService cs = new CalculateService();

boolean result = cs.calculShichangInput(-200, 0.5, 100);

assertEquals(false,result);

}

@Test

public void testCalculateInput3() {//利率为负数

CalculateService cs = new CalculateService();

boolean result = cs.calculShichangInput(200, -0.5, 100);

assertEquals(false,result);

}

@Test

public void testCalculateInput4() {//非法操作:利率大于1

CalculateService cs = new CalculateService();

boolean result = cs.calculShichangInput(200, 2, 100);

assertEquals(false,result);

}

@Test

public void testCalculateInput5() {//非法操作:本金为负数

CalculateService cs = new CalculateService();

boolean result = cs.calculShichangInput(200, 0.5, -100);

assertEquals(false,result);

}

@Test

public void testCalculateInput6() {//非法操作:本金大于终额

CalculateService cs = new CalculateService();

boolean result = cs.calculShichangInput(200, 0.5, 300);

assertEquals(false,result);

}

3.测试结果如下:

本测试类里根据不同场景设计了不同的测试,具体场景请看展示代码里的注释。

需要注意的是,有的方法测试并不一定以true为正确返回值,如本程序中的非法输入拦截功能,在检测到非法输入时就应该返回false才是正确的。如下图所示:

总结

JUnit确实是一个很实用的东西,并且很灵活,用法因程序而异,也因人而异,我也只是刚刚接触,知道的也有限,用得有点生硬但是感觉比上一次用得顺手了,以后还得多练习吧。

Github代码传送门:

0406.复利计算器5.0版-release

复利计算器5.0-release 目录 项目简介 Github链接推送 客户需求 新增需求分析 项目设计 效果演示 操作说明 程序结构 结对分工 合作照片 总结 1.项目简介 项目名称:复利计算器 目 ...

0329 复利计算器5.0 Juint单元测试 组员 254列志华 253韩麒麟

一.主要功能与需求分析 1.本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30 2.如果按照单 ...

复利计算器4.0 【java版】

import java.util.Scanner; public class FuLi { public static void main(String[] args) { ; Scanner sca ...

0414-复利计算器6.0.Release

复利计算器6.0--Release 前言 本次复利计算器的版本更新,主要有以下内容的完善: 1.优化了Web版的页面,提供了更舒服美观的用户体现. 2.新增了移动端(安卓)app版本. 版本信息 项目 ...

复利计算--4.0 单元测试之JAVA版-软件工程

复利计算--4.0 单元测试-软件工程 前言:由于本人之前做的是C语言版的复利计算,所以为了更好地学习单元测试,于是将C语言版的复利计算修改为JAVA版的. 一.主要的功能需求细分: 1.本金为100 ...

复利计算器v1

public class MainFrame extends JFrame { /** * 文本框 */ private TextField[] texts = new TextField[5]; / ...

复利计算器app发布

复利计算器app发布 抱歉:由于无法实现服务端的持续开启,发布的app仅为简单的单机版,暂时舍弃了c/s版本的一些功能,如:投资动态管理功能. 应用详情博客:请点击这里 apk下载地址1(百度手机助手 ...

复利计算1.0,2.0,3.0(java)

程序源代码: import java.util.Scanner; public class ch { public static void main(String[] args) { Scanner ...

随机推荐

java内存模型优化建议

八.Java编程建议 根据GC的工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求.一些关于程序设计的几点建议: 1)最基本的建议就是尽早释放无用对象的引用.大多数程序 ...

栈的C数组实现

栈是一种先进后出的数据结构.栈的基本操作包括:入栈,出栈,初始化栈,清空栈,遍历栈. C代码如下: #include #define MaxSize 20 typede ...

windows下使用lighttpd+php(fastcgi)+mysql

一.windows下编译配置执行lighttpd 1.下载并安装cygwin. 2.下载lighttpd源码并解压3.在cygwin环境下进入lighttpd的解压文件夹后,执行: 1> ./c ...

Android性能测试工具Emmagee

下面介绍一个简单实用的Android性能软件 ~~欢迎加入测试群574875837一起讨论研究 一.Emmagee 简介 Emmagee主要用于监控单个App的CPU,内存,流量,启动耗时,电量,电流 ...

PHP加密字符串函数(Discuz内置的)

接触Discuz有一段时间了,一直很喜欢这个论坛程序,确实是一个很不错的程序,灰常值得我们去学习,这里介绍它其中的一个加密函数(含解密)这个加密函数的特点在于,比普通的加密函数多了一个随机密钥 ,可以 ...

BZOJ 3884: 上帝与集合的正确用法 [欧拉降幂]

PoPoQQQ大爷太神了 只要用欧拉定理递归下去就好了.... 然而还是有些细节没考虑好: $(P,2) \neq 1$时分解$P=2^k*q$的形式,然后变成$2^k(2^{(2^{2^{...}} ...

scrollview嵌套下拉控件嵌套recyclerview(不动第三方原基础自定义)

相信会碰到很多类似的需求,一个列表控件,然后控件上方的一个头部需要自定义,这样就不好有时候也不能加在列表控件的头部了,那必须得嵌套一层scrollview了,没毛病,那么一般的列表控件都是有上拉下拉的 ...

【ES6】export和important使用区别

export命令 export { name1, name2, …, nameN }; export { variable1 as name1, variable2 as name2, …, name ...

js的缓存

无网络的情况下,使用静态资源呈现页面的方法,只有h5的manifest 有网的情况下(可以连接到服务器的情况下),有3种判断缓存的方式. ------------------------------- ...

linux下保存下位机输出的串口信息为文件

linux下保存下位机输出的串口信息为文件 1.stty -F /dev/ttyUSB0 raw (转换成raw模式) 2.stty -F /dev/ttyUSB0 speed 115200 (设置波 ...

计算机junit测试类,复利计算器4.0之再遇JUnit相关推荐

  1. 0329 复利计算器5.0 Juint单元测试 组员 254列志华 253韩麒麟

    0329 复利计算器5.0 Juint单元测试 组员 254列志华 253韩麒麟 一.主要功能与需求分析 1.本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入 ...

  2. junit测试类叫什么名字_使用Junit测试名称

    junit测试类叫什么名字 命名测试 当我们创建Junit测试时,通常没有方法名称的实际使用. Junit运行器使用反射来发现测试方法,并且从版本4开始,您不再被限制以test开始方法的名称. 测试方 ...

  3. Android之Junit测试类

    今天跟着视频学习了Junit测试类,趁热打铁.顺便把学的东西整理下来,再就是为了以后好回顾 1.Junit单元测试介绍: 在实际开发中,经常要对已经实现的功能进行单元测试,以保证当前单元没问题,尽可能 ...

  4. 0319 复利计算器4.0

    0319 复利计算器4.0 /** 程序完成时间: 3月19日 9:50pm 发表时间: 3月20日 0:18am 此版本是在前三个版本的基础上添加了 等额本息还贷计算 的新功能 并且按照实验要求增强 ...

  5. JUnit测试类完成后事务是默认 回滚的。只能查询数据,不能增删改。

    JUnit测试类完成后事务是默认 回滚的.只能查询数据,不能增删改. 在测试类或者测试方法上面加上注解 @Rollback(false)  表示事物不回滚,这样数据就可以提交到数据库中了. 转载于:h ...

  6. 创建JUNIT测试类

    建立JUNIT测试类步骤: 1 建立正常的JAVA工程 2  在JAVA工程的build path 的LIB中导入JUNIT4 3 工程中新建一个普通TEST.JAVA,在该类中在随便的一个方法上,反 ...

  7. maven编译的时候排除junit测试类

    maven编译的时候排除junit测试类 maven项目中使用junit进行单元测试,在进行编译的时候,可以通过2种方式排除test测试类的编译. 有2种方式 : 使用命令的时候带上参数 mvn in ...

  8. 0318复利计算器4.0

    #include<stdio.h> #include<math.h>double benjin=0,W=0; double year=0; int N=1; double li ...

  9. JUnit测试类使用

    JUnit4测试使用教程 I 简介  JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成 ...

最新文章

  1. Spring源码分析【0】-框架的基础:继承和接口调用链
  2. katalon进行app测试_使用Katalon Studio创建你的第一个API测试
  3. CAN总线简明易懂教程(一)
  4. mysql group by 分组查询
  5. PHP常用函数之文件系统处理
  6. Paint.NET 3.0正式版发布了
  7. SAP Spartacus page slot里的Component,对应的DOM节点是如何插入到DOM tree里的
  8. 【Kafka】kafka无法查看消费组消费信息,其他相关组件正常
  9. P4113 [HEOI2012]采花
  10. 【操作系统】第1章 操作系统概论
  11. 大专生自学web前端到找到工作的经验
  12. Faster-Rcnn扫盲
  13. 舌苔厚舌中间有裂缝,舌苔厚白,中间有裂缝主要是什么原因??
  14. 32形容词/副词的原级比较
  15. 外贸常用术语_外贸价格一些常用的专业术语
  16. 文献管理软件zotero发布ios版本,支持webdav同步并且内置pdf阅读器
  17. HBase系列从入门到精通(一)
  18. Keras 主要的层函数
  19. 第三届蓝桥桥杯预赛真题及详细答案
  20. SIFT特征匹配算法——Vlfeat与Graphviz安装的相关问题解决

热门文章

  1. Linux编写C++程序
  2. Flume简介及配置
  3. 小米手机计算机无法归零,小米体脂秤不归零怎么调
  4. java 随机字母_Java基础之随机生成数字和字母
  5. 制作Retropie系统树莓派掌机(三)
  6. 计算机组成原理第二章笔记---计算机进化与性能
  7. iOS 开发 : 14个技巧助你适配 iOS10
  8. 自律机与计算机联锁的接口,调度集中车站自律机与计算机联锁操作.doc
  9. ui设计现状与意义_UI设计的现状如何?
  10. 【博客表情包】emoji和符号表情包