在eclipse中用junit
实现单元测试。
学院:软件04级4班。
任课教师:尹皓。
小组成员及分工:
junit实现单元测试: 戈文一 0443111050(组长)
黄寿鑫 0443111282 (副组长)
张福恺 0443111064(组员)
孙超宇 0443111062(组员)
李阳 0443111236(组员)
uml assignments: 赵刚:0443111255(组员)
王红松 0443111174(组员)
王明飞 0443111006(组员)
using eclipse and junit for unit test
一、 eclipse 和 junit简介:
eclipse是一个开放源**的、基于j**a的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组合构建开发环境。eclipse附带了一个标准的插件集,包括j**a开发工具(jdk)。
eclipse平台为插件开发提供一组功能强大的服务和api.它使来自完全不同的**商的工具之间的集成变得平滑,为不同类型的开发工作创建了一个无缝的环境。其中就包括著名的工程测试框架工具――junit。
junit是一个开源的j**a单元测试框架。在2024年,由 erich gamma 和 kent beck 开发完成。这两个牛人中 erich gamma 是 gof 之一;kent beck 则在 xp 中有重要的贡献(你觉得眼熟一点都不奇怪)。
正如常言道:“麻雀虽小,五脏俱全。” junit设计的非常小巧,但是功能却非常强大。
下面是junit一些特性的总结:
1) 提供的api可以让你写出测试结果明确的可重用单元测试用例。
2) 提供了三种方式来显示你的测试结果,而且还可以扩展。
3) 提供了单元测试用例成批运行的功能。
4) 超轻量级而且使用简单,没有商业性的欺骗和无用的向导。
5) 整个框架设计良好,易扩展。
对不同性质的被测对象,如class,jsp,servlet,ejb等,junit有不同的使用技巧。
二、 软件测试基础:
软件测试就是在软件投入使用前,对软件需求分析,设计规格说明和编码的最后审查,这是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件开发过程中横跨两个阶段:
通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。编码和单元测试属于软件开放过程中的同一阶段。在结束这个阶段后对软件系统还要进行各种综合测试,这是软件开发过程中的另一个独立阶段,即测试阶段。
1、 软件测试的目的:
应用 grenford 在《the art of software testing》一书中的观点,软件测试的目的就是:
1) 为了发现错误而执行程序的过程;
2) 为了证明程序有错,而不是证明程序没有错误;
3) 一个好的测试用例是在于它能发现至今未发现的错误;
4) 一个成功的测试是发现了至今未发现的错误测试。
2、 软件的测试原则:
1) 尽早地不断地进行软件测试。
2) 测试实例应由测试输入数据和与之对应地预期输出结果两部分组成。
3) 整体测试工作应该由独立地装业地软件测试机构来完成。
4) 在设计测试用例时,应该包括合理的输入条件和不合理的输入条件。
5) 充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。
6) 严格执行测试计划,排除测试的随意性。
7) 对每一个测试结果做全面的检查与核实。
8) 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
3、 软件测试种类:
1) 单元测试:是为检查个别模块服务的。
2) 用户测试: 这是功能的、系统的并且认可的测试。
3) 集成测试:是在用户测试和单元测试的十字路口。
4) 开发者测试:就是那些开发者校验整段**、新加的**、新加的函数。
4、 软件测试过程:
1) 编写测试式样书。
2) **评审。
3) 单元测试。
4) 集成测试。
5) 验收测试。
5、 软件测试方法:
1) 黑盒测试:又称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试每个功能是否都正常使用。这种测试是在软件的接口处进行的,测试人员不需要考虑程序内部的逻辑结构和内部特征,只依据程序的需求说明书,检查程序的功能是否符合它的功能说明。
2) 白盒测试:又称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有按预定要求正常工作,而不顾它的功能。
为了使用junit(更多细节请参考 ),必须在project的classpath中添加因此,建立一个新的classpath变量junit。选择window->preferences菜单栏打开preferences对话框,展开j**a结点,选择build path->classpath variables项。
然后点击new按钮打开new variable entry菜单,输入新的变量名:junit,设置路径为在eclipse3.0.
2中,能够在eclipse/plugins/下找到。
然后点击ok。
为了debug的需要,也要添加junit包的源**(这是一个可选步骤;在此例子中我们不使用junit源**)。
你将在\eclipse\plugins\目录中发现许多包的源**的jar文件。为junit源**创建一个新的变量,按照上面创建juntit的步骤,不过此变量名为junit_src(通常在源**变量前面添加前缀_src)并且将它连接到。
eclipse\plugins\
创建此变量以后,在project jn_test上单击鼠标右键,选择properties,打开jn_test的属性对话框,点击j**a build path项和libraries选项。并add variable,添加junit变量,所得如图所示:
当展开一个jar文件结点的时候,能够指定在何处寻找相关联的源**和j**adoc。为了对这里的源**使用junit_src,选择结点中的source attachement,单击edit打开source attachment configuration对话框。点击variable按钮,双击junit_src,并点击ok关闭此对话框。
如图所示:
这里我们已经使junit的源**能在eclipse上使用。点击ok关闭jn_test的属性对话框。
四、使用junit进行测试。
junit是与eclipse一起提供的一个开源测试框架。在同一个project中,可以创建与其它class无异的“基于junit”的class,并使用此junit**去测试project中的其它class。junit的此种使用方式能够为每位在此应用程序上工作的人员构建一组标准的测试。
如果当更改了应用程序**以后,他们所需做的工作仅仅是点击几下按钮来验证此应用程序是否依然能够通过标准测试。
junit被用来测试**,并且它是由能够测试不同条件的断言方法(assertion method)组成,如下所示:
assertequals(a, b)
测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)
assertfalse(a)
测试a是否为false(假),a是一个boolean数值。
assertnotnull(a)
测试a是否非空,a是一个对象或者null。
assertnotsame(a, b)
测试a和b是否没有都引用同一个对象。
assertnull(a)
测试a是否为null,a是一个对象或者null。
assertsame(a, b)
测试a和b是否都引用同一个对象。
asserttrue(a)
测试a是否为true(真),a是一个boolean数值。
我们使用这些方法来构建junit测试。当运行一个junit应用程序时,它打开自己的视图(view)来立即指示哪个测试通过了,哪个测试失败了。
1、创建测试应用程序。
我们将在一个例子中使用junit来展示它如何在我们创建的应用程序jn_test中运行。此应用程序的意图是简单地为一个整型数组赋值,并通过get和set方法来对它们进行存取。
特别地,我们将包含三个方法,它们用来返回可能被用在junit中测试的值。
allocate
分配一个整型数组并且对其赋值;返回新分配的数组。
set 为整型数组赋值;如果成功返回true,否则返回false。
get 从整型数组中取值;返回需要的数值。
jn_test的最初版本:
public class jn_test {
private int array;
public int allocate(){
array[0] =0;
array[1] =1;
array[2] =2;
return array;
public int get(int index){
return array[index];
public boolean set(int index,int value){
if (index < index >=0) {
array[index] =value;
return true;
elsereturn false;
allocate方法分配一个整型数组,对其进行赋值,并返回此数组:
private int array;
public int allocate( )
array[0]=0;
array[1]=1;
array[2]=2;
return array;
get方法在数组的给定位置取整数值:
public int get(int index) {
return array[index];
set方法为给定的位置赋整数值,按条件返回true或者false。
public boolean set(int index, int value) {
软件工程作业
题目4 operating systems 操作系统 我们通过移动时代最流行的两大操作系统来分析他们的特点。谷歌 andriod 苹果 ios 日前,市场调研机构发布了 2017 年第一季度智能 踪报告,通过该报告我们了解到,苹果依然是目前全球第二大智能手机厂商,具备ios的iphone 所占的市场...
软件工程作业
计算机与信息技术学院软件工程。专业 计算机科学与技术年级 班级 09级计科一班 2011 2012学年第二学期。一 设计背景 工资管理工作在高校日常管理中占据及其重要的地位,是真正涉及到千家万户的一件大事。高校工资管理事务政策性强,数据量大,而且报表多 条目细,要求高度精确和高度安全,还要求报表标准...
软件工程作业
生命信息与仪器工程学院。设计题目 基于gprs的远程自动抄表系统设计 专业 测试计量技术及仪器 学号。姓名。导师。一 系统功能图及网络架构。二 结构图及例图。1.用户角色关系图。主要为系统用户及权限的物理结构,其中用户对应多个角色,角色与权限为多对多的关系,中间通过中间表相互关联。2.抄表过程异常结...