【转】Junit初体验
Junit是用来做测试的,无论是单元测试,还是接口测试,都可以通过调用Junit来验证被调用方法的正确性。当然,要验证一个方法的正确性,还可以采用main方法,通过输出每一个result,人为比对其正确性,但是,它存在两个弊端,一是main方法不能一起运行,假如开发者写的程序有100个类,那么需要对应写100个main方法;二是大多数情况下需要人为的去观察输出结果是否正确,对于一个大的工程,这样做无疑是浪费时间。 一般eclipse里自带了Junit包,可以直接引入。如果不想用自带的Junit,可以在Junit的官网上下载,www.junit.org,然后再引入到项目中。Junit4里加入了静态引入的概念,它的好处是在调用该类的方法时,可以直接使用该方法,例如:import static org.junit.Assert.*,那么可以直接使用assertTrue(“must be true”, managerResult.isSuccess()),而不需要Assert.assertTrue(“must be true”, managerResult.isSuccess())。 asserThat,也是Junit4中引入的一个新方法,它可以替代所有的assert,使用方法为assertThat(actual,matchermatcher), 其中,第二个参数可以是正则匹配值,它们更接近自然语言,可读性更高,更灵活。如果想在junit中使用这种方法,需要加载一个hamcrest的包,具体做法是:在项目里,添加外部的jar包,将hamcrest的hamcres-core-1.2.jar和hamcres-library-1.2.jar添加进来即可。这里再列举几个assertThat的一般匹配符的使用: 1,assertThat(z,allOf(greaterThan(5),lessThan(10))) /*z必须满足大于5并且小于10*/ 2,assertThat(z,anyOf(greaterThan(5),lessThan(10))) /*z只需要大于5,或者小于10*/ 3,assertThat(z,anything) /*z无论是什么都能通过测试*/ 4,assertThat(z,not(8)) /*z的值不等于8*/ 5,assertThat(z,is(8)) /*z的值等于8*/ 此外,Junit4中采用java5中的注解annotation,其中,@test,@ingore,@before,@after,@beforeClass,@afterClass是常用到的几个注解,下面分别对它们做一个简单介绍: 1,@test,表示这是一个需要被执行的测试类; 2,@ingore被忽略的测试方法; 3,@before,@after,分别执行在每一个具体的@test前和后。在运行某些@test时,需要一些先决条件,如执行前需要先打开某个文件,就可以在@before中准备好; 4,@beforeClass,@afterClass,分别执行在所有的测试运行前和后,其中的方法必须是static,因为有可能在类初始化之前就运行了@beforeClass。有的测试类需要在测试前搭配环境,比如与数据库的连接,那么就可以放在@beforeClass中。简而言之,在测试前,需要搭载比较复杂的环境,加载比较费时的连接都可以放在@beforeClass中实现。 最后,运行Junit程序未通过的情况有两种,一是failure:指测试失败,比如实际值和预期结果不一致;二是error:指程序本身错误,比如溢出。然后通过查看Junit的具体错误信息,做相应的修改。 转载务必注明出处Taobao QA Team,原文地址:http://qa.taobao.com/?p=13758
【转】Junit初体验的更多相关文章
- Junit初体验
JUnit是一个开源的Java单元测试框架,由 Erich Gamma 和 Kent Beck 开发完成. 主要是为了方便开发人员在自己开发的过程中能够及时的发现和解决bug用的,一方面自己可以通过单 ...
- protobuf初体验
概念介绍 Protocol buffers 是google公司的与语言无关.与平台无关的.可扩张的为序列化话结构数据,就像xml一样,办事更加的小巧.快速.简单.Protocol buffers 目前 ...
- junit4初体验
OK,现在我们正式开始junit4系列的整理.前面的junit38作为4的补充知道就好了,实际编码中我们以4为主.这里先来一把junit的初体验,同时也让我们来一步一步的了解下TDD的好处. ORM大 ...
- hibernate--CRUD初体验
hibernate的crud操作初体验. 看具体实例 package com.fuwh.model; import javax.persistence.Column; import javax.per ...
- Android开发学习之路--百度地图之初体验
手机都有gps和网络,通过gps或者网络可以定位到自己,然后通过百度,腾讯啊之类的地图可以显示我们的地理位置.这里学习下百度地图的使用.首先就是要申请开发者了,这个详细就不多讲了.http://dev ...
- Spring JDBCTemplate连接SQL Server之初体验
前言 在没有任何框架的帮助下我们操作数据库都是用jdbc,耗时耗力,那么有了Spring,我们则不用重复造轮子了,先来试试Spring JDBC增删改查,其中关键就是构造JdbcTemplate类. ...
- SSH初体验系列--Hibernate--2--crud操作
Ok,今天比较详细的学习一下hibernate的C(create).R(read).U(update).D(delete) 相关api... 前言 Session: 是Hibernate持久化操作的基 ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
随机推荐
- TSQLDBServerHttpApi一个使用HTTPS.SYS内核的数据库服务端控件
TSQLDBServerHttpApi一个使用HTTPS.SYS内核的数据库服务端控件 在WINDOWS操作系统,TSQLDBServerHttpApi使用HTTPS.SYS作为通信内核,而HTTPS ...
- css自动换行与不换行
1.自动换行 div{ word-wrap: break-word; word-break: normal; } 2.不换行 div{ white-space:nowrap; } 3.浮动效果不换行 ...
- KVO(Key Value Observing)
*KVO能够监听某个对象属性的改变 原理:仅仅要给一个对象注冊一个监听,那么在执行时, 系统就会自己主动给该对象生成一个子类对象,而且重写自己主动生成的子类对象的被监听属性的set方法.然后在set方 ...
- 推荐一个静态页面生成工具-mkdocs
最近需要找一个生成api文档的工具,找来找去发现mkdocs特别符合需求. 部署只需python和pip 直接生成静态html 用markdown编写 不需要再markdown里指明日期.标题等信息 ...
- nginx+vue实例纪录
参考:http://www.cnblogs.com/wuac/p/6406843.html 新建工作目录vuepro,命令行之行命令:vue init webpack vue-test (项目默认的名 ...
- perl学习笔记——正则表达式
正则表达式 简单模式:匹配$_中的内容,只需要将模式写在一对斜线(/)中就可以了. 如:#!/usr/bin/env perl use 5.010; $_="yabba dabba doo& ...
- Linux学习笔记 (六)用户管理命令
一.用户帐号 1.超级用户:具有操作系统中的最高权限,用来管理和维护操作系统.root用户. 2.普通用户:由root用户来创建,在宿主目录中具有完全权限. 3.程序用户:由应用程序添加,维护某个应用 ...
- mysql 5.6 修改root原始密码不为空方法
mysql 5.6安装好之后,是默认root用户的密码为空的,此时为了安全性需要修改密码不为空,修改方法为: cmd或者mysql 5.6 command line client登陆之后,输入一下命令 ...
- 协程基础_context系列函数
近期想看看协程,对这个的详细实现不太了解.查了下,协程最常规的做法就是基于makecontext,getcontext,swapcontext这类函数在用户空间切换用户上下文. 所以在这通过样例代码尽 ...
- 关于窗体跟随与 PointToScreen
今日写一段测试代码,实现的功能是,当一个输入框获得焦点时,某个帮助窗体跟随在其下方显示.代码很简单,本来没有什么值得一提的.但实验的时候发现,有些控件能较好地跟随,但有些不能,而且距离十分远. 主要代 ...