实现一个简单的计算

注:目标类和测试类要放在同一包下, JUnit单元测试基础要点

目标类:Calculator.java

  1. package com.junit3_8;
  2. public class Calculator {
  3. //加
  4. public int add(int a, int b)
  5. {
  6. return a + b ;
  7. }
  8. //减
  9. public int subtract(int a, int b)
  10. {
  11. return a - b ;
  12. }
  13. //乘
  14. public int multiply(int a, int b)
  15. {
  16. return a * b ;
  17. }
  18. //除
  19. public int divide(int a, int b)throws Exception
  20. {
  21. if (0 == b)
  22. {
  23. throw new Exception("除数不能为0");
  24. }
  25. return a / b ;
  26. }
  27. }

测试类: CalculatorTest.java

  1. package com.junit3_8;
  2. import junit.framework.Assert;
  3. import junit.framework.TestCase;
  4. //测试类要继承TestCase
  5. public class CalculatorTest extends TestCase{
  6. Calculator cal;
  7. //在“每个”测试方法执行之前被调用
  8. public void setUp()
  9. {
  10. //这段代码在这写比较方便,只写一次就够,
  11. //不用在每个方法里写,因为这个方法每次都被调用,生成不同的对象,供测试方法使用
  12. cal = new Calculator();
  13. //System.out.println("setUp");
  14. }
  15. //在“每个”测试方法执行之后被调用
  16. public void tearDown()
  17. {
  18. //System.out.println("testDown");
  19. }
  20. //测试方法:方法名要以test为开头,无参数,无返回类型
  21. public void testAdd()
  22. {
  23. //Calculator cal = new Calculator();
  24. int result = cal.add(1, 2);
  25. //第一个参数是预期的,第二个参数是真实的
  26. Assert.assertEquals(3, result);
  27. }
  28. public void testSubtract()
  29. {
  30. //Calculator cal = new Calculator();
  31. int result = cal.subtract(1, 2);
  32. //第一个参数是预期的,第二个参数是真实的
  33. Assert.assertEquals(-1, result);
  34. }
  35. public void testMultiply()
  36. {
  37. //Calculator cal = new Calculator();
  38. int result = cal.multiply(1, 2);
  39. //第一个参数是预期的,第二个参数是真实的
  40. Assert.assertEquals(2, result);
  41. }
  42. public void testDivide()
  43. {
  44. int result = 0;
  45. //Calculator cal = new Calculator();
  46. try
  47. {
  48. result = cal.divide(4, 2);
  49. }
  50. catch(Exception e)
  51. {
  52. e.printStackTrace();
  53. //让测试失败
  54. Assert.fail();
  55. }
  56. //第一个参数是预期的,第二个参数是真实的
  57. Assert.assertEquals(2, result);
  58. }
  59. //除数为0的情况
  60. public void testDivideByZero()
  61. {
  62. Throwable th = null ;
  63. //Calculator cal = new Calculator();
  64. try
  65. {
  66. cal.divide(1, 0);
  67. Assert.fail();
  68. }
  69. catch(Exception e)
  70. {
  71. th = e ;
  72. //e.printStackTrace();
  73. }
  74. //th 不为空 null
  75. Assert.assertNotNull(th);
  76. //第一个参数是预期的,第二个参数是真实的
  77. Assert.assertEquals(Exception.class, th.getClass());
  78. Assert.assertEquals("除数不能为0", th.getMessage());
  79. }
  80. //加了这个main方法,可以直接以 Java Application 方式运行 ,也可以以 JUnit Test 运行
  81. public static void main(String[] args)
  82. {
  83. //命令行形式打印
  84. junit.textui.TestRunner.run(CalculatorTest.class);
  85. //awt 界面方式显示
  86. //junit.awtui.TestRunner.run(CalculatorTest.class);
  87. //swing 界面方式显示
  88. //junit.swingui.TestRunner.run(CalculatorTest.class);
  89. }
  90. }

1.调用 Assert.fail() 是让测试失败,该方法一般放在你认为不会到达的地方

2.这段代码让整个程序简便了许多  Calculator cal;    //在“每个”测试方法执行之前被调用  public void setUp()  {   //这段代码在这写比较方便,只写一次就够,   //不用在每个方法里写,因为这个方法每次都被调用,生成不同的对象,供测试方法使用   cal = new Calculator();  }

基于JUnit3.8的一个简单的测试程序的更多相关文章

  1. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  2. 基于websocket实现的一个简单的聊天室

    本文是基于websocket写的一个简单的聊天室的例子,可以实现简单的群聊和私聊.是基于websocket的注解方式编写的.(有一个小的缺陷,如果用户名是中文,会乱码,不知如何处理,如有人知道,请告知 ...

  3. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  4. 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目

    自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...

  5. 基于红帽5裁剪一个简单的Linux

    HOST:宿主机 Target:目标机 1.基于HOST制作一个简单的可启动的Linux 1.给目标磁盘分区 两个: 在宿主机上:/dev/sdb1,/dev/sdb2 /dev/sdb1挂载到 /m ...

  6. 基于gulp编写的一个简单实用的前端开发环境

    自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...

  7. 基于Laravel框架的一个简单易学的微信商城(新手必学)

    俗话说,麻雀虽小可五脏俱全呀! 今天分享的这个基于Laravel的小项目大概功能有这些: 1.实现会员登录.注册功能.数据双向验证功能.2.实现手机短信验证.邮件激活账号.邮件通知.3.ajax提交数 ...

  8. 基于SpringBoot+WebSocket搭建一个简单的多人聊天系统

    前言   今天闲来无事,就来了解一下WebSocket协议.来简单了解一下吧. WebSocket是什么   首先了解一下WebSocket是什么?WebSocket是一种在单个TCP连接上进行全双工 ...

  9. laravel基于redis实现的一个简单的秒杀系统

    说明:网上很多redis秒杀系统的文章,看的都是一头雾水,然后自己来实现一个,也方便以后自己学习 实现的方式是用的redis的list队列,框架为laravel 核心部分为list的pop操作,此操作 ...

随机推荐

  1. POJ 1509 Glass Beads 后缀自动机 模板 字符串的最小表示

    http://poj.org/problem?id=1509 后缀自动机其实就是一个压缩储存空间时间(对节点重复利用)的储存所有一个字符串所有子串的trie树,如果想不起来长什么样子可以百度一下找个图 ...

  2. Android为什么需要广播Broadcast

       在Android系统中,为什么需要广播机制呢?广播机制,本质上它就是一种组件间的通信方式,如果是两个组件位于不同的进程当中,那么可以用Binder机制来实现,如果两个组件是在同一个进程中,那么它 ...

  3. python一行代码开启http

    python -m SimpleHTTPServer 8000 & 监听8000端口 浏览器用127.0.0.1:8000访问 如果出现no module named SimpleHTTPSe ...

  4. 内功心法 -- java.util.LinkedList<E> (3)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  5. python开发_tempfile

    python中的tempfile模块,是为创建临时文件(夹)所提供的 如果你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么tempfile模块来创建临时文件(夹)是个不错的选择 其 ...

  6. 使用sklearn进行交叉验证

    模型评估方法 假如我们有一个带标签的数据集D,我们如何选择最优的模型? 衡量模型好坏的标准是看这个模型在新的数据集上面表现的如何,也就是看它的泛化误差.因为实际的数据没有标签,所以泛化误差是不可能直接 ...

  7. 【原】Eclipse部署Maven web项目到tomcat服务器时,没有将lib下的jar复制过去的解决办法

    我们在做web开发是,经常都要在eclipse中搭建web服务器,并将开发中的web项目部署到web服务器进行调试,在此,我选择的是tomcat服务器.之前部署web项目到tomcat进行启动调试都很 ...

  8. 关闭Spring Boot的Jsckson的FAIL_ON_EMPTY_BEANS

    说明:Spring Boot中默认使用了Jackson做JSON的解析. 解决方法: 1.通过注入Bean来实现 错误: org.springframework.http.converter.Http ...

  9. HDU 3966 Aragorn's Story (树链剖分+树状数组)

    Aragorn's Story Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. Spring JdbcTemplate batchUpdate() 实例

    在某些情况下,可能需要将一批记录插入到数据库中.如果你对每条记录调用一个插件的方法,SQL语句将被重复编译,造成系统缓慢进行. 在上述情况下,你可以使用 JdbcTemplate BATCHUPDAT ...