软件测试实验二.docx

上传人:b****5 文档编号:5975069 上传时间:2023-01-02 格式:DOCX 页数:19 大小:45.77KB
下载 相关 举报
软件测试实验二.docx_第1页
第1页 / 共19页
软件测试实验二.docx_第2页
第2页 / 共19页
软件测试实验二.docx_第3页
第3页 / 共19页
软件测试实验二.docx_第4页
第4页 / 共19页
软件测试实验二.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

软件测试实验二.docx

《软件测试实验二.docx》由会员分享,可在线阅读,更多相关《软件测试实验二.docx(19页珍藏版)》请在冰豆网上搜索。

软件测试实验二.docx

软件测试实验二

实验二、运用Junit工具进行面向对象系统的测试

一、实验目的

单元测试在面向对象的开发过程中变得越来越重要,而一个简明易学、适用广泛、高效稳定的单元测试框架对成功的实施测试有着至关重要的作用。

在java编程环境中,junitframework是一个已经被大多数java程序员采用和实证的优秀的测试框架。

该实验目的让学生掌握运用Junit框架进行面向对象的单元测试。

二、实验要求

了解Junit框架设计思想及使用。

提交测试文档和测试驱动程序代码

三、实验原理及内容

一)Junit框架介绍。

Junit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。

他是用于单元测试框架体系xUnit的一个实例(用于java语言)。

它包括以下特性:

1、用于测试期望结果的断言(Assertion)

2、用于共享共同测试数据的测试工具

3、用于方便的组织和运行测试的测试套件

4、图形和文本的测试运行器

Junit由6个包组成,分别为Framework、Extensions、Runner、Awtui、Textui、Swingui,前3个包是构建包,后3个包是表现层包,如下图所示:

Junit.framework包中包含了Junit测试类中所需要的所有基类(BaseClass),实际上这个包也是整个Junit的基础框架。

TestCase类是这个包的核心,测试人员对TestCase类进行继承开发自己的类测试驱动程序。

其余的类用来支援TestCase类,比如TestSuite用来集合多个测试用例,Assert类实现期望值和实际值的验证,TestResult收集所有测试用例执行后结果。

Test接口是这个包的关键所在,它建立了TestCase和TestSuite之间的关联,同时为整个框架做了扩展预留。

该测试框架如下图:

二)测试内容Product

Product包是一个典型的商品流通应用程序,该包(Package)包含了三个类Iproduct(接口)、(具体类)、(具体类)。

其中IProduct为接口类,该类规约了所有实现它的类的行为,还可以让所有实现了它的类成为一个参数,在各个方法中自由传递。

Product、StoreHouse为具体类分别实现了IProduct接口,Product包采用这样的设计可以用更通俗的语言解释:

我们有很多货物并且货物有不同的种类(书籍、食物等),在现实生活中仓库管理员把这些统称为“货物”,只是销售前或盘点中,才会细分成大小类型不一致的商品。

设计中描述了一个货物泛化对象Product,根据不同的私有属性描述,实例化的Product就成了书籍或者食物。

同样,StoreHouse类描述了一个超市对象。

下面是详细描述。

1、IProductCRCCards

IProductCRC

所属包

com.fastpoint.Product

类名称

PublicinterfaceIProduct

扩展于

none

子类型

none

实现于

none

类描述(功能)

货物交易接口,该接口制订了进行货物操作的动作规约。

类属性和类方法列表

01

publicIProductadd(IProductp)

02

publicIProductaddProduct(Productp)

03

IProductaddStoreHouse(StoreHouses)

04

publicbooleanisZero()

05

publicIProductnegate()

06

publicIProductsubtract(IProductp)

07

publicvoidappendTo(StoreHouses);

2、ProductCRCCards

ProductCRC

所属包

com.fastpoint.Product

类名称

PublicinterfaceIProduct

扩展于

none

子类型

none

实现于

none

类描述(功能)

货物交易接口,该接口制订了进行货物操作的动作规约。

类属性和类方法列表

01

privateintfSummation

02

privateStringfType

01

publicIProductadd(IProductp)

02

publicIProductaddProduct(Productp)

03

publicIProductaddStoreHouse(StoreHouses)

04

publicbooleanisZero()

05

publicIProductnegate()

06

publicIProductsubtract(IProductp)

07

publicvoidappendTo(StoreHouses);

08

publicintsummation()

09

publicStringtype()

10

publicbooleanequals(ObjectanObject)

11

publicinthaseCode()

12

publicStringtoSting()

类属性描述(功能)

属性名

fSummation

描述

某类商品总数

修饰为

private

类型

int

类属性描述(功能)

属性名

fType

描述

商品类型

修饰为

private

类型

String

类方法描述(功能)

方法名

add

描述

增加一个商品到货物对象中

01

参数类型

IProductp

返回值

IProduct

类方法描述(功能)

方法名

addProduct

描述

一个增加商品操作的快捷方式

01

参数类型

Productp

返回值

IProduct

类方法描述(功能)

方法名

addStoreHouse

描述

为货物对象指定一个超市对象

01

参数类型

StoreHouses

返回值

IProduct

类方法描述(功能)

方法名

isZero

描述

判断商品对象的值是否为空

返回值

boolean

类方法描述(功能)

方法名

negate

描述

取负值操作

返回值

IProduct

类方法描述(功能)

方法名

Subtract

描述

减少一个货物对象的商品值

01

参数类型

IProductp

返回值

IProduct

类方法描述(功能)

方法名

appendTo

描述

向超市对象的商品列表增加具体商品

01

参数类型

StoreHouses

返回值

void

类方法描述(功能)

方法名

summation

描述

返回某类商品的总数

返回值

fSummation

类方法描述(功能)

方法名

type

描述

返回某类商品的类型

返回值

fType

类方法描述(功能)

方法名

equals

描述

覆盖父类的同名方法,对传入的对象进行逻辑比对

01

参数类型

ObjectanObject

返回值

false/true

类方法描述(功能)

方法名

haseCode

描述

返回某类商品属性(类型+数量)的关键字

返回值

int

类方法描述(功能)

方法名

toSting

描述

返回某类商品属性(类型+数量)

返回值

buffer

3、StoreHouseCRCCards

ProductCRC

所属包

com.fastpoint.Product

类名称

PublicinterfaceIProduct

扩展于

none

子类型

none

实现于

none

类描述(功能)

货物交易接口,该接口制订了进行货物操作的动作规约。

类属性和类方法列表

01

privateVectorfMonies

01

publicIProductadd(IProductp)

02

publicIProductaddProduct(Productp)

03

publicIProductaddStoreHouse(StoreHouses)

04

publicIProductappendSH(StoreHouses)

05

publicvoidappendProduct(productp)

06

privateProductfindProduct(Stringtype)

07

privateBooleancontains(Productp)

08

publicbooleanisZero()

09

publicIProductnegate()

10

publicIProductsubtract(IProductp)

11

publicvoidappendTo(StoreHouses);

12

publicbooleanequals(ObjectanObject)

13

publicinthaseCode()

14

publicIproductsimplify()

15

publicStringtoSting()

16

staticIProductcreate(IProductp1,IProductp2)

类属性描述(功能)

属性名

fMonies

描述

超市商品列表

修饰为

private

类型

Vector

类方法描述(功能)

方法名

add

描述

增加商品

01

参数类型

IProductp

返回值

IProduct

类方法描述(功能)

方法名

addProduct

描述

一个增加商品操作的快捷方式,新增该商品到超市列表中。

01

参数类型

Productp

返回值

IProduct

类方法描述(功能)

方法名

addStoreHouse

描述

合并超市商品值

01

参数类型

StoreHouses

返回值

IProduct

类方法描述(功能)

方法名

appendSH

描述

增加商品到超市列表中

01

参数类型

StoreHouses

返回值

IProduct

类方法描述(功能)

方法名

appendProduct

描述

合并超市列表中的商品值

01

参数类型

ProductaProduct

返回值

void

类方法描述(功能)

方法名

findProduct

描述

根据商品类型查找相同属性的商品

01

参数类型

Stringtype

返回值

Product

类方法描述(功能)

方法名

contains

描述

根据返回商品类型判断商品值

01

参数类型

Productp

返回值

boolean

类方法描述(功能)

方法名

isZero

描述

判断商品对象的值是否为空

返回值

boolean

类方法描述(功能)

方法名

negate

描述

取超市商品列表的商品负值

返回值

IProduct

类方法描述(功能)

方法名

subtract

描述

减少超市商品列表中某项商品的值

01

参数类型

IProductp

返回值

IProduct

类方法描述(功能)

方法名

appendTo

描述

向商品对象到超市对象中

01

参数类型

StoreHouses

返回值

void

类方法描述(功能)

方法名

simplify

描述

返回超市商品列表中的一个单例

返回值

fType.hashCode()+fSummation

类方法描述(功能)

方法名

equals

描述

覆盖父类的同名方法,对传入的对象进行逻辑比对

01

参数类型

ObjectanObject

返回值

false/true

类方法描述(功能)

方法名

haseCode

描述

返回超市实例的哈希值

返回值

int

类方法描述(功能)

方法名

toSting

描述

覆盖父类同名方法,返回超市商品列表(字符串输出)

返回值

Sting

类方法描述(功能)

方法名

create

描述

创建指定超市对象的商品列表

01

参数类型

IProductp1

02

参数类型

IProductp1

返回值

IProduct

三)程序代码

1、IProduct

packagecom.fastpoint.Product;

publicinterfaceIProduct{

publicIProductadd(IProductp);

publicIProductaddProduct(Productp);

publicIProductaddStoreHouse(StoreHouses);

publicbooleanisZero();

publicIProductnegate();

publicIProductsubtract(IProductp);

publicvoidappendTo(StoreHouses);

}

2、Product

packagecom.fastpoint.Product;

publicclassProductimplementsIProduct{

privateintfSummation;

privateStringfType;

publicProduct(intsummation,Stringtype){

fSummation=summation;

fType=type;

}

publicIProductadd(IProductp){

returnp.addProduct(this);

}

publicIProductaddProduct(Productp){

if(p.type().equals(type()))

returnnewProduct(summation()+p.summation(),type());

returnStoreHouse.create(this,p);

}

publicIProductaddStoreHouse(StoreHouses){

returns.addProduct(this);

}

publicintsummation(){

returnfSummation;

}

publicStringtype(){

returnfType;

}

publicbooleanequals(ObjectanObject){

if(isZero())

if(anObjectinstanceofIProduct)

return((IProduct)anObject).isZero();

if(anObjectinstanceofProduct){

ProductaProduct=(Product)anObject;

returnaProduct.type().equals(type())&&summation()==aProduct.summation();

}

returnfalse;

}

publicinthaseCode(){

returnfType.hashCode()+fSummation;

}

publicbooleanisZero(){

returnsummation()==0;

}

publicIProductnegate(){

returnnewProduct(-summation(),type());

}

publicIProductsubtract(IProductp){

returnadd(p.negate());

}

publicStringtoSting(){

StringBufferbuffer=newStringBuffer();

buffer.append("["+summation()+""+type()+"]");

returnbuffer.toString();

}

publicvoidappendTo(StoreHouses){

s.appendProduct(this);

}

}

3、StoreHouse

packagecom.fastpoint.Product;

importjava.util.Vector;

importjava.util.Enumeration;

publicclassStoreHouseimplementsIProduct{

privateVectorfMonies=newVector(5);

privateIProductsimplify(){

if(fMonies.size()==1)

return(IProduct)fMonies.elements().nextElement();

returnthis;

}

publicProductfindProduct(Stringtype){

for(Enumeratione=fMonies.elements();e.hasMoreElements();){

Productp=(Product)e.nextElement();

if(p.type().equals(type))

returnp;

}

returnnull;

}

privatebooleancontains(Productp){

Productfound=findProduct(p.type());

if(found==null)returnfalse;

returnfound.summation()==p.summation();

}

publicinthashCode(){

inthash=0;

for(Enumeratione=fMonies.elements();e.hasMoreElements();){

Objectm=e.nextElement();

hash^=m.hashCode();

}

returnhash;

}

publicbooleanisZero(){

returnfMonies.size()==0;

}

staticIProductcreate(IProductp1,IProductp2){

StoreHouseresult=newStoreHouse();

p1.appendTo(result);

p2.appendTo(result);

returnresult.simplify();

}

publicIProductadd(IProductm){

returnm.addStoreHouse(this);

}

publicIProductaddProduct(Productp){

returnStoreHouse.create(p,this);

}

voidappendProduct(ProductaProduct){

if(aProduct.isZero())return;

IProductold=findProduct(aProduct.type());

if(old==null){

fMonies.addElement(aProduct);

return;

}

fMonies.removeElement(old);

IProductsum=old.add(aProduct);

if(sum.isZero())

return;

fMonies.addElement(sum);

}

publicIProductaddStoreHouse(StoreHouses){

returnStoreHouse.create(s,this);

}

voidappendSH(StoreHouseaSH){

for(Enumeratione=aSH.fMonies.elements();e.hasMoreElements();)

appendProduct((Product)e.nextElement());

}

publicbooleanequals(ObjectanObject){

if(isZero())

if(anObjectinstanceofIProduct)

return((IProduct)anObject).isZero();

if(anObjectinstanceofStoreHouse){

StoreHouseaStoreHouse=(StoreHouse)anObject;

if(aStoreHouse.fMonies.size()!

=fMonies.size())

returnfalse;

for(Enumeratione=fMonies.elements();e.hasMoreElements();){

Productp=(Product)e.nextElement();

if(!

aStoreHouse.contains(p))

returnfalse;

}

returntrue;

}

returnfalse;

}

publicIProductnegate(){

StoreHouseresult=newStoreHouse();

for(Enumeratione=fMonies.elements();e.hasMoreElements();){

Productp=(Product)e.nextElement();

result.appendProduct((Product)p.negate());

}

returnresult;

}

publicIProductsubtract(IProductp){

returnadd(p.negate());

}

pub

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1