基于JUnit3.8的一个简单的测试程序
实现一个简单的计算
注:目标类和测试类要放在同一包下, JUnit单元测试基础要点
目标类:Calculator.java
- package com.junit3_8;
- public class Calculator {
- //加
- public int add(int a, int b)
- {
- return a + b ;
- }
- //减
- public int subtract(int a, int b)
- {
- return a - b ;
- }
- //乘
- public int multiply(int a, int b)
- {
- return a * b ;
- }
- //除
- public int divide(int a, int b)throws Exception
- {
- if (0 == b)
- {
- throw new Exception("除数不能为0");
- }
- return a / b ;
- }
- }
测试类: CalculatorTest.java
- package com.junit3_8;
- import junit.framework.Assert;
- import junit.framework.TestCase;
- //测试类要继承TestCase
- public class CalculatorTest extends TestCase{
- Calculator cal;
- //在“每个”测试方法执行之前被调用
- public void setUp()
- {
- //这段代码在这写比较方便,只写一次就够,
- //不用在每个方法里写,因为这个方法每次都被调用,生成不同的对象,供测试方法使用
- cal = new Calculator();
- //System.out.println("setUp");
- }
- //在“每个”测试方法执行之后被调用
- public void tearDown()
- {
- //System.out.println("testDown");
- }
- //测试方法:方法名要以test为开头,无参数,无返回类型
- public void testAdd()
- {
- //Calculator cal = new Calculator();
- int result = cal.add(1, 2);
- //第一个参数是预期的,第二个参数是真实的
- Assert.assertEquals(3, result);
- }
- public void testSubtract()
- {
- //Calculator cal = new Calculator();
- int result = cal.subtract(1, 2);
- //第一个参数是预期的,第二个参数是真实的
- Assert.assertEquals(-1, result);
- }
- public void testMultiply()
- {
- //Calculator cal = new Calculator();
- int result = cal.multiply(1, 2);
- //第一个参数是预期的,第二个参数是真实的
- Assert.assertEquals(2, result);
- }
- public void testDivide()
- {
- int result = 0;
- //Calculator cal = new Calculator();
- try
- {
- result = cal.divide(4, 2);
- }
- catch(Exception e)
- {
- e.printStackTrace();
- //让测试失败
- Assert.fail();
- }
- //第一个参数是预期的,第二个参数是真实的
- Assert.assertEquals(2, result);
- }
- //除数为0的情况
- public void testDivideByZero()
- {
- Throwable th = null ;
- //Calculator cal = new Calculator();
- try
- {
- cal.divide(1, 0);
- Assert.fail();
- }
- catch(Exception e)
- {
- th = e ;
- //e.printStackTrace();
- }
- //th 不为空 null
- Assert.assertNotNull(th);
- //第一个参数是预期的,第二个参数是真实的
- Assert.assertEquals(Exception.class, th.getClass());
- Assert.assertEquals("除数不能为0", th.getMessage());
- }
- //加了这个main方法,可以直接以 Java Application 方式运行 ,也可以以 JUnit Test 运行
- public static void main(String[] args)
- {
- //命令行形式打印
- junit.textui.TestRunner.run(CalculatorTest.class);
- //awt 界面方式显示
- //junit.awtui.TestRunner.run(CalculatorTest.class);
- //swing 界面方式显示
- //junit.swingui.TestRunner.run(CalculatorTest.class);
- }
- }
1.调用 Assert.fail() 是让测试失败,该方法一般放在你认为不会到达的地方
2.这段代码让整个程序简便了许多 Calculator cal; //在“每个”测试方法执行之前被调用 public void setUp() { //这段代码在这写比较方便,只写一次就够, //不用在每个方法里写,因为这个方法每次都被调用,生成不同的对象,供测试方法使用 cal = new Calculator(); }
基于JUnit3.8的一个简单的测试程序的更多相关文章
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
- 基于websocket实现的一个简单的聊天室
本文是基于websocket写的一个简单的聊天室的例子,可以实现简单的群聊和私聊.是基于websocket的注解方式编写的.(有一个小的缺陷,如果用户名是中文,会乱码,不知如何处理,如有人知道,请告知 ...
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- 基于红帽5裁剪一个简单的Linux
HOST:宿主机 Target:目标机 1.基于HOST制作一个简单的可启动的Linux 1.给目标磁盘分区 两个: 在宿主机上:/dev/sdb1,/dev/sdb2 /dev/sdb1挂载到 /m ...
- 基于gulp编写的一个简单实用的前端开发环境
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- 基于Laravel框架的一个简单易学的微信商城(新手必学)
俗话说,麻雀虽小可五脏俱全呀! 今天分享的这个基于Laravel的小项目大概功能有这些: 1.实现会员登录.注册功能.数据双向验证功能.2.实现手机短信验证.邮件激活账号.邮件通知.3.ajax提交数 ...
- 基于SpringBoot+WebSocket搭建一个简单的多人聊天系统
前言 今天闲来无事,就来了解一下WebSocket协议.来简单了解一下吧. WebSocket是什么 首先了解一下WebSocket是什么?WebSocket是一种在单个TCP连接上进行全双工 ...
- laravel基于redis实现的一个简单的秒杀系统
说明:网上很多redis秒杀系统的文章,看的都是一头雾水,然后自己来实现一个,也方便以后自己学习 实现的方式是用的redis的list队列,框架为laravel 核心部分为list的pop操作,此操作 ...
随机推荐
- BZOJ1017 魔兽地图DotR (树上背包)
一道背包的神题,用到了树上dp和背包dp,这个题的特殊性在于儿子对于父亲节点是有影响的,所以用f[i][j][k]表示第i号装备,其中用j个来合成上层装备,花费k元所能获得最大的力量值. 然后对于每一 ...
- BZOJ 1497 JZYZOJ 1344 [NOI2006]最大获利 网络流 最大权闭合图
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 http://172.20.6.3/Problem_Show.asp?id=1344 思路 ...
- HDU 6141 I am your Father!(最小树形图)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6141 [题目大意] 给出一个有向图,求1点为根的最小树形图使得第n个点的直接父亲编号最小 [题解] ...
- Hash表及hash算法的分析
Hash表中的一些原理/概念,及根据这些原理/概念: 一. Hash表概念 二. Hash构造函数的方法,及适用范围 三. Hash处理冲突方法,各自特征 四. ...
- [bzoj1019][SHOI2008]汉诺塔 (动态规划)
Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体. 对汉诺塔的一次合法的操 ...
- Windows下Apache2.2+PHP5安装步骤
Windows下Apache2.2+PHP5安装 初学者在学习PHP的时候可能都会遇到安装Apache和PHP不成功的问题,于是很多开发者便选择了集成包,一键安装好Apache+PHP+MySQL.但 ...
- MySQL遇到的一个卡库问题及对update的学习
近日遇到个卡库的问题,环境是MySQL5.5.12,报错信息如下 ) and was aborted. There is a chan ce that your master is inconsist ...
- 使用CefSharp在.Net程序中嵌入Chrome浏览器(二)——参数设置
在实现了.Net程序中嵌入Chrome浏览器后,下一步的个性化操作就是加入一些设置了,在前面的文章中,我们可以看到在使用Chrome控件前,有如下一个操作: var setting = new Cef ...
- HDU 4685 Prince and Princess (2013多校8 1010题 二分匹配+强连通)
Prince and Princess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- 采用FPGA实现音频模数转换器
http://www.21ic.com/app/eda/200905/42832.htm http://www.eefocus.com/article/09-10/84673s.html 摘 要 简要 ...