曾经公司做过一个.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的更多相关文章

  1. 三分钟快速上手TensorFlow 2.0 (下)——模型的部署 、大规模训练、加速

    前文:三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署 TensorFlow 模型导出 使用 SavedModel 完整导出模型 不仅包含参数的权值,还包含计算的流程(即计算 ...

  2. 三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署

    本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 前文:三分钟快速上手TensorFlow 2.0 (上)——前置基础.模型建立与可视化 tf.train. ...

  3. 三分钟快速上手TensorFlow 2.0 (上)——前置基础、模型建立与可视化

    本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 学习笔记类似提纲,具体细节参照上文链接 一些前置的基础 随机数 tf.random uniform(sha ...

  4. x01.TextProc: 两三分钟完成的一个小工具

    在工作中,遇到这么个问题,需要将 Excel 表中类似 2134-1234-4456 的商品编号输入到单位的程序中,而程序只认 213412344456 这种没有 ‘-’ 的输入.数量比较多,一笔一笔 ...

  5. unity3d 三分钟实现简单的赛车漂移

    提到赛车游戏,大家最关心的应该就是漂移吧?! 从学unity开始,我就一直在断断续续的研究赛车 因为自己技术太烂.悟性太差等原因,我走了不少弯路 也许你会说,网上那么多资料,你不会查啊 是啊!网上一搜 ...

  6. 三分钟部署Laxcus大数据管理系统

    Laxcus是Laxcus大数据实验室历时五年,全体系自主设计研发的国内首套大数据管理系统.能够支撑百万台级计算机节点,提供EB量级存储和计算能力,兼容SQL和关系数据库.最新的2.x版本已经实现对当 ...

  7. JUnit三分钟教程 ---- 实际应用

    JUnit三分钟教程 ---- 实际应用 摘自http://lavasoft.blog.51cto.com/62575/65775   接上文"JUnit三分钟教程 ---- 快速起步&qu ...

  8. JUnit三分钟教程 ---- 快速起步

    JUnit三分钟教程 ---- 快速起步 摘自http://lavasoft.blog.51cto.com/62575/65625/ JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因 ...

  9. 三分钟浅谈TT猫的前端优化

    首先看一张访问TT猫首页的截图: 测试环境为谷歌浏览器,暂且不讨论其它浏览器,截图下方我们可以观察到以下参数: DOMContentLoaded:1.42s | Load:2.31s 以上参数是在CT ...

随机推荐

  1. Slalom

    题意: 有n个宽度为w的门,给出门的左端点的水平位置x和高度y,和恒定的垂直速度,现有s个速度,求能通过这n个门的最大速度. 分析: 二分速度判断 #include <map> #incl ...

  2. SQL Server2005安装配置以及测试

    SQL Server2005有2种版本,一种是集成版的, 一种是2个文件夹形式的.这里使用后者,安装文件夹名字为:SQL Server x86,该文件夹里面有Servers和Tools文件夹以及一些其 ...

  3. Config配置文件详解

    (默认的配置设置)以下所有的代码都应该位于 <configuration> <system.web> 和 </system.web> </configurat ...

  4. iOS开发常用输入校验

    1.数字字符校验 #define NUMBERSPERIOD @"0123456789." - (BOOL)CheckInput:(NSString *)string { NSCh ...

  5. public private protected和默认的区别(转自百度)

    public private protected和默认的区别 Java中对类以及类中的成员变量和成员方法通过访问控制符(access specifier)进行区分控制.刚学Java语言的同学可能对pu ...

  6. Spark RDD概念学习系列之Spark的数据存储(十二)

    Spark数据存储的核心是弹性分布式数据集(RDD). RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的. 逻辑上RDD的每个分区叫一个Partition. 在Spar ...

  7. Apache Spark Shark的简介

    Shark是构建在Spark和Hive基础之上的数据仓库. 目前,Shark已经完成学术使命,终止开发,但其架构和原理仍具有借鉴意义. 它提供了能够查询Hive中所存储数据的一套SQL接口,兼容现有的 ...

  8. Linux递归删除文件命令

    Linux递归删除文件命令 find . -name "*.log.*" -exec ls {} \; find . -name "*.log.*" -exec ...

  9. [iOS微博项目 - 1.1] - 设置导航栏主题(统一样式)

    A.导航栏两侧文字按钮 1.需求: 所有导航栏两侧的文字式按钮统一样式 普通样式:橙色 高亮样式:红色 不可用样式:亮灰 阴影:不使用 字体大小:15   github: https://github ...

  10. HDU 4461 The Power of Xiangqi (水题)

    题意:给定一些字母,每个字母都代表一值,如果字母中没有B,或者C,那么就在总值大于1的条件下删除1,然后比较大小. 析:没什么好说的,加起来比较就好了. 代码如下: #pragma comment(l ...