三分钟掌握 JUnit3.0
曾经公司做过一个.net的项目,在项目开发的过程中。我们採用的是分层的开发方式,大家先在一起讨论接口, 然后讨论完以后,形成文档,然后依照文档进行开发!这样就有一个问题,你必需要保证你的接口是正确的。然后才干提供给其它人使用。
所以一定要对你写的方法进行单元測试。单元測试真的是非常方便!
如今的公司是开发java 项目的,开发过程也和.net的开发模式是一样的,所以说单元測试也成了必需品。
可是我们用的JUnit。
下边就给大家介绍一下JUnit的用法。
我们首先来建立一个项目。项目结构例如以下例如以下图所看到的!
然后倒入我们须要的jar包,我用的Myeclipse 。他集成了JUnit,所以说直接加入他的jar就能够了,在项目上单击右键。选择BuildPath 然后选择Libraries, 然后选择JUnit,他会有两个版本号,Junit3 和Junit 4然后选择一个, 本项目选择的是Junit3 ,加入完毕后, 项目中会多出一个Junit3的 一个库。
然后在项目的根文件夹下建一个Source Folder 例如以下图所看到的, 然后在建立一个和src 下边一样的包。这么做的目的是使下边要生成的測试类。不用引用对被測试类的依赖。他们生成的.class文件在同一个Bin文件夹下。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdob25namllMDMwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在我们的要測试的那个类上边单击右键, 然后选择New ,然后选择Others ,然后选择Junit Test Case。 然后Source folder 选择我们后来建立的測试的Source folder。然后将setUp和tearDown勾选上。
将我们我们要測试的那个类的全部的方法都勾选上,或者勾选我们要測试的方法就能够了!
然后选择完毕!
这样就会看到我们的測试类已经自己主动的为我们生成好了。
可是我们能够看到。自己主动为我们生成的測试方法。都是没有实现的,并且这些測试方法符合了一定的规范。
測试方法满足例如以下原则: 1)方法类型必须为public 2)返回值void 3)无參数 4)方法名必须以test开头或者以test结尾。可是建议使用前者!
所以接下来我们要自己写測试方法的实现了!
。例如以下所看到的。
package com.tgb.test; import junit.framework.Assert;
import junit.framework.TestCase; public class CountMethodTest extends TestCase { /**
* setUp在每一个測试方法运行前都要运行 该方法
*/
protected void setUp() throws Exception {
super.setUp();
} /**
* tearDown 在每一个測试方法运行完毕后都要运行 该方法
*/
protected void tearDown() throws Exception {
super.tearDown();
} /**
* 測试目标类的add 方法
*/
public void testAdd() {
int par1=3;
int par2=0;
CountMethod cm = new CountMethod();
//该值为运行完目标类方法后,返回的实际值
int actual= cm.add(par1, par2);
// 推断方法的返回结果
Assert.assertEquals(3, actual);// 第一个參数是期望值,第二个參数是要验证的值
} public void testSubtract() {
int par1=3;
int par2=0;
CountMethod cm = new CountMethod();
int actual= cm.subtract(par1, par2);
assertEquals(3, actual);
} public void testMultiply() {
int par1=3;
int par2=0;
CountMethod cm = new CountMethod();
int actual= cm.multiply(par1, par2);
assertEquals(0, actual);
} public void testDiv() {
int par1=3;
int par2=0;
CountMethod cm = new CountMethod();
int actual= cm.div(par1, par2);
assertEquals(0, actual);
}
}
然后我们在该測试类的空白处单击右键选择 Run As 然后选择Junit Test 。这样我们就能够运行我们刚才写的单元測试了!
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdob25namllMDMwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
能够看到測试结果例如以下。运行了四个方法,有一个错误的。能够看到打叉的那个失败了! 通过单元測试,我们能够非常快的发现我们的方法写的是否正确!
假设在測试的SourceFolder以下有多个单元測试类,我们想统一进行单元測试。你会怎么处理呢?我们能够一个个的去手动运行,然后在哪等着结果。是不是有点浪费时间呢。Junit 给我提供了一个更好的方法,我们在建立一个測试类。然后 该类的写法例如以下,这样我们就能够一次性的把全部的方法都运行了!
package com.tgb.test; import junit.framework.Assert;
import junit.framework.TestCase; public class CountMethodTest extends TestCase { /**
* setUp在每一个測试方法运行前都要运行 该方法
*/
protected void setUp() throws Exception {
super.setUp();
} /**
* tearDown 在每一个測试方法运行完毕后都要运行 该方法
*/
protected void tearDown() throws Exception {
super.tearDown();
} /**
* 測试目标类的add 方法
*/
public void testAdd() {
int par1=3;
int par2=0;
CountMethod cm = new CountMethod();
//该值为运行完目标类方法后,返回的实际值
int actual= cm.add(par1, par2);
// 推断方法的返回结果
Assert.assertEquals(3, actual);// 第一个參数是期望值,第二个參数是要验证的值
} public void testSubtract() {
int par1=3;
int par2=0;
CountMethod cm = new CountMethod();
int actual= cm.subtract(par1, par2);
assertEquals(3, actual);
} public void testMultiply() {
int par1=3;
int par2=0;
CountMethod cm = new CountMethod();
int actual= cm.multiply(par1, par2);
assertEquals(0, actual);
} public void testDiv() {
int par1=3;
int par2=0;
CountMethod cm = new CountMethod();
int actual= cm.div(par1, par2);
assertEquals(0, actual);
}
}
Junit 的使用,非常方便的让我们測试类,可是他生成的測试方法体是空的,都须要自己写, 假设能想.Net 中那样,把測试方法体,大部分的内容都给你写好了就更好了!
三分钟掌握 JUnit3.0的更多相关文章
- 三分钟快速上手TensorFlow 2.0 (下)——模型的部署 、大规模训练、加速
前文:三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署 TensorFlow 模型导出 使用 SavedModel 完整导出模型 不仅包含参数的权值,还包含计算的流程(即计算 ...
- 三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署
本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 前文:三分钟快速上手TensorFlow 2.0 (上)——前置基础.模型建立与可视化 tf.train. ...
- 三分钟快速上手TensorFlow 2.0 (上)——前置基础、模型建立与可视化
本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 学习笔记类似提纲,具体细节参照上文链接 一些前置的基础 随机数 tf.random uniform(sha ...
- x01.TextProc: 两三分钟完成的一个小工具
在工作中,遇到这么个问题,需要将 Excel 表中类似 2134-1234-4456 的商品编号输入到单位的程序中,而程序只认 213412344456 这种没有 ‘-’ 的输入.数量比较多,一笔一笔 ...
- unity3d 三分钟实现简单的赛车漂移
提到赛车游戏,大家最关心的应该就是漂移吧?! 从学unity开始,我就一直在断断续续的研究赛车 因为自己技术太烂.悟性太差等原因,我走了不少弯路 也许你会说,网上那么多资料,你不会查啊 是啊!网上一搜 ...
- 三分钟部署Laxcus大数据管理系统
Laxcus是Laxcus大数据实验室历时五年,全体系自主设计研发的国内首套大数据管理系统.能够支撑百万台级计算机节点,提供EB量级存储和计算能力,兼容SQL和关系数据库.最新的2.x版本已经实现对当 ...
- JUnit三分钟教程 ---- 实际应用
JUnit三分钟教程 ---- 实际应用 摘自http://lavasoft.blog.51cto.com/62575/65775 接上文"JUnit三分钟教程 ---- 快速起步&qu ...
- JUnit三分钟教程 ---- 快速起步
JUnit三分钟教程 ---- 快速起步 摘自http://lavasoft.blog.51cto.com/62575/65625/ JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因 ...
- 三分钟浅谈TT猫的前端优化
首先看一张访问TT猫首页的截图: 测试环境为谷歌浏览器,暂且不讨论其它浏览器,截图下方我们可以观察到以下参数: DOMContentLoaded:1.42s | Load:2.31s 以上参数是在CT ...
随机推荐
- 认识solr结构,了解核心的文件目录
下载solr并解压后,发现solr的目录里有很多的东西,此时我们可能会感到很恐慌,不知如何下手,下面让我带你认识它. 1.解压后的solr目录结构如下: 虽然里面有很多的文件,但是我们需要的其实就两个 ...
- 如何解决重启数据库时报ORA-01031无法登数据库
问题现象:以无用户方式登录数据库,重启或关闭数据时,遇到下列问题: C:\Documents and Settings\xuzhengzhu>sqlplus /nolog SQL*Plus: R ...
- SQL删除数据库里所有表的外键,同时删除所有用户表
SQL删除数据库里所有表的外键,同时删除所有用户表 删除所有的用户表的外键,直接将下面的代码拷贝到数据库里执行即可: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- HDU 5768 Lucky7 容斥原理+中国剩余定理(互质)
分析: 因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题.当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的 ...
- bjfu1238 卡特兰数取余
题目就是指定n,求卡特兰数Ca(n)%m.求卡特兰数有递推公式.通项公式和近似公式三种,因为要取余,所以近似公式直接无法使用,递推公式我简单试了一下,TLE.所以只能从通项公式入手. Ca(n) = ...
- 《Python CookBook2》 第一章 文本 - 改变多行文本字符串的缩进 && 扩展和压缩制表符(此节内容待定)
改变多行文本字符串的缩进 任务: 有个包含多行文本的字符串,需要创建该字符串的一个拷贝.并在每行行首添加或者删除一些空格,以保证每行的缩进都是指定数目的空格数. 解决方案: # -*- coding: ...
- 【windows核心编程】DLL相关(3)
DLL重定向 因为DLL的搜索路径有先后次序,假设有这样的场景:App1.exe使用MyDll1.0.dll, App2.exe使用MyDll2.0.dll, MyDll1.0 和 MyDll2.0是 ...
- JQuery插件的学习
此前一直想就关于Jquery插件的开发,做一个深入的学习,由于各种原因,当然主要是自己太懒了...今天就系统分析一下Jquery插件的开发(参考了http://www.xprogrammer.com/ ...
- codeforces 704B - Ant Man 贪心
codeforces 704B - Ant Man 贪心 题意:n个点,每个点有5个值,每次从一个点跳到另一个点,向左跳:abs(b.x-a.x)+a.ll+b.rr 向右跳:abs(b.x-a.x) ...
- “大数据讲师”、“Hadoop讲师”、“Spark讲师”、“云计算讲师”、“Android讲师”
王家林简介 Spark亚太研究院院长和首席专家,中国目前唯一的移动互联网和云计算大数据集大成者. 在Spark.Hadoop.Android等方面有丰富的源码.实务和性能优化经验.彻底研究了Spark ...