软件测试junit和hamcrest和eclemma的使用及三角形类型判定代码测试.docx
- 文档编号:6024227
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:12
- 大小:753.46KB
软件测试junit和hamcrest和eclemma的使用及三角形类型判定代码测试.docx
《软件测试junit和hamcrest和eclemma的使用及三角形类型判定代码测试.docx》由会员分享,可在线阅读,更多相关《软件测试junit和hamcrest和eclemma的使用及三角形类型判定代码测试.docx(12页珍藏版)》请在冰豆网上搜索。
软件测试junit和hamcrest和eclemma的使用及三角形类型判定代码测试
目录
一、GitHub的URL1
二、InstallJunit(4.12),Hamcrest(1.3)withEclipse1
三、InstallEclemmawithEclipse2
四、WriteajavaprogramforthetriangleproblemandtesttheprogramwithJunit2
五、Junit简单使用2
六、使用EclEmma进行简单地覆盖测试5
七、Hamcrest简单使用7
八、“判断三角形类型代”程序的测试代码说明9
九、参考文章11
一、GitHub的URL
关于三角形判断的代码和测试代码的github的URL:
二、InstallJunit(4.12),Hamcrest(1.3)withEclipse
jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。
Eclipse中引入jar包参考这个链接:
介绍链接中的第二种方法:
用户jar包式
通过“项目”->“属性”->“Java构建路径”->“添加库”->“用户库”->“新建”->填写用户库名称,点击“OK”->“添加外部jar包”(“也可以选择多个jar,但是限制在同一个文件夹中”,链接中的作者这句话不知道对不对?
)。
这种方式的好处是,不用每次创建项目都要引入jar包。
三、InstallEclemmawithEclipse
通过eclipse安装非常简单,“帮助”->“eclipsemarketplace”,搜索eclemma,一路默认安装就好了。
四、WriteajavaprogramforthetriangleproblemandtesttheprogramwithJunit
a)Descriptionoftriangleproblem:
Functiontriangletakesthreeintegersa,b,cwhicharelengthoftrianglesides;calculateswhetherthetriangleisequilateral,isosceles,orscalene.
判断三角形的思路:
1)先判断3条边是否是正数
2)接着是否满足“两条边之和大于第三边”
3)最后判断是哪种类型的三角形。
先判断是否是等边三角形,再判断是否是等边三角形,最后“不等边三角形”。
五、Junit简单使用
1.junit中常用注解:
@是Java注解,即annotation。
注解可以理解为插件,是代码级别的插件,在类的方法上写:
@XXX,就是在代码上插入了一个插件。
注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。
@Test:
测试方法必须用@Test注解,测试方法必须是publicvoid,即公共、无返回数据,可以抛出异常。
@Test的expected参数用于异常测试,即测试是否会抛出指定的异常,若抛出则成功,反之失败。
下图测试用例是以0为除数,运行结果为“成功”!
因为指定的“ArithmeticException”异常抛出了。
@Test的timeout参数用于限时测试,即限定测试用例耗费的时间,单位毫秒,如果测试用例没有在限定时间内完成则失败。
@Ignore:
如果暂时不需要运行某些测试方法或者测试类,就可以方法前加上这个注解,在运行结果中,junit会统计忽略的用例数,来提醒你。
@Before:
会在每一个用例运行之前都运行一次。
主要用于一些独立于用例之间的准备工作。
必须是publicvoid,不能为static。
@After:
与@Before相对应
@Parameters:
用于使用参数化功能,参数化测试,用于对同一测试用例测试多组数据。
@Runwith:
首先分清几个概念。
1)测试方法:
就是用@Test注解的一些函数。
2)测试类:
包含一个或者多个测试方法的一个***Test.java文件。
3)测试集:
是一个suite,可能包含多个测试类。
4)测试运行器:
决定用什么方式偏好取运行这些测试方法、测试类,测试集。
而@RunWith就是放在测试类名之前,用来确定这个类怎么运行。
也可以不标注,会使用默认的运行器。
常见的运行器有:
a)@RunWith(Parameterized.class)参数化运行器,配合@Parameters使用junit的参数化功能
b)@RunWith(Suite.class)
@Suite.SuiteClasses({Atest.class,Btest.class})
测试套件运行器配合使用测试套件功能。
当有多个测试类需要同时进行测试时,就是用测试套件来完成该工作。
将要测试的类作微@Suite.SuiteClasses的参数
2.junit使用方法:
编写完成代码之后,选择“运行”按钮旁边的倒三角按钮,选择运行方式中的junit测试即可。
执行结果:
3.介绍静态类org.junit.Assert:
在程序中“importstaticorg.junit.Assert.*”,静态导入Assert类,因此可以在程序中直接使用Assert类的任何静态方法。
assertEquals():
用来查看对象中存的值是否是期待的值;
assertFalse()和assertTure(),查看变量是否为false或true,如果assertFalse()查看的变量值是FALSE,测试成功,否则失败;assertTrue与之相反。
assertSame()和assertNotSame(),用来比较两个对象的引用是否相等和不相等。
assertNull()和assertNotNull()用来查看对象是否为恐吓buweikong
fail(),意为失败,用来抛出错误。
六、使用EclEmma进行简单地覆盖测试
覆盖测试是衡量“测试质量”的一个重要指标。
如果我们设计的测试用例仅覆盖了地阿妈的一小部分,那么不管我们写了多少测试用例,我们也不能相信软件质量是有保证的。
EclEmma能够对Java语言编写的程序进行覆盖测试。
从而对程序运行的结果生成详尽的覆盖测试报告。
安装完成后,eclipse的工具栏出现下图覆盖测试按钮,不要看错哦!
运行已经创建好的Java项目:
选中项目,点击覆盖测试的按钮,按下图。
在Java编辑器中,EclEmma用不同的色彩表示了源代码的测试情况。
其中。
绿色代表该行代码被完整执行,红色代表代码没有被执行,黄色代表代码被部分执行。
黄色的行通常出现在单行代码包含分支的情况,如下图
除了在源代码的编辑窗口直接进行着色之外,EcLEmma还提供了单独的视图来统计程序的覆盖测试率。
由于本次只运行了triangleKind,并没有运行triangleTest,所以该行测试率为0.
EcLemma还提供了统计多次覆盖结果的功能。
下图进行junit测试覆盖,从图中可以看出设计的“测试用例”对代码的覆盖率50%左右,说明测试用例设计的不够合理。
七、Hamcrest简单使用
如果要判断某几个值是否为true或者false,使用hamcrest判断会更方便。
Hamcrest是专门为增强junit来提供的框架,它可以有效使用一些语义比较清晰的名字来做判断,常用方法:
逻辑:
allOf:
如果所有匹配器都匹配,测试才能成功,遵循c++中的“shortcircuiits”;
anyOf:
如果任何匹配器匹配就成功,遵循c++中的“shortcircuiits”;
not:
如果包装的匹配器不匹配时,测试成功。
对象:
equalTo:
测试对象相等,使用object.equals方法。
Object的equals()方法是比较两个对象的内存地址是否相等,即若object1.equals(object2)为true,则表示equals1和equals2实际上是引用同一个对象。
hasToString:
测试object.tostring方法,Object类的toString方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成。
换句话说,该方法返回一个字符串,它的值等于:
getClass().getName()+'@'+Integer.toHexString(hashCode())。
例如:
com.struts2.User@de6ced;
instanceOf,isCompatibleType:
测试类型;
notNullValue,nullValue:
测试对象实例;
sameInstance:
测试对象实例;
hasProperty:
测试JavaBeans属性。
集合:
array:
测试一个数组元素;
hasEnrty,hasKey,hasValue:
测试一个集合包含一个元素;
hasItemInArray:
测试一个数组包含一个元素。
数字:
closeTo:
测试浮点值接近给定的值;
greaterThan,greaterThanOrEqualTo,lessThan,lessThanOrEqualTo:
测试大小
文本:
equalToIgnoringCase:
测试字符串相等忽略大小;
equalToIgnoringWhiteSpace:
测试字符串相等,忽略空格;
containsString,endWith,startsWith:
测试字符串匹配。
使用:
在你写的junit的测试用例比如testTriangle中先静态导入hamcrest包中的Matchers:
然后在@Test注解后的测试方法中写asserThat方法就行:
错误:
进行junit测试报错如下:
右键“项目名称”->“属性”,进行如下配置:
Eclipse库中自带了一个“junit4”,而我自己也设置了我的“用户库”,将自带的“移除”,将“用户库”里的hamcrest和junit的jar包调换顺序,使hamcrest优先于junit。
八、“判断三角形类型代”程序的测试代码说明
使用了,@RunWith(Parameterized.class)参数化运行器,配合@Parameters使用junit的参数化功能。
代码如下:
packagetju.junit.triangle;
importstaticorg.junit.Assert.*;
importjava.util.Arrays;
importjava.util.Collection;
importorg.junit.After;
importorg.junit.Before;
importorg.junit.Test;
importorg.junit.runner.RunWith;
importorg.junit.runners.Parameterized;
importorg.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
publicclassTriangleTest{
privateinta;
privateintb;
privateintc;
privateStringexpected;
privateTriangleKindtriangle;
publicTriangleTest(Stringexpected,inta,intb,intc)
{
this.expected=expected;
this.a=a;
this.b=b;
this.c=c;
}
@Before
publicvoidsetUp()throwsException{
System.out.println("测试开始了!
");
triangle=newTriangleKind();
System.out.println("triangle对象被初始化!
");
}
@After
publicvoidtearDown()throwsException{
System.out.println("triangle对象将被清理!
");
triangle=null;
System.out.println("测试结束!
");
}
@Parameters
publicstaticCollection
{
returnArrays.asList(newObject[][]
{
{"等边三角形",2,2,2},
{"等边三角形",6,6,6},
{"等腰三角形",5,2,5},
{"等腰三角形",2,2,3},
{"等腰三角形",8,7,7},
/*{"不等边三角形",5,3,6},
{"非三角形",1,2,3},
{"非三角形",-2,-3,4},*/
});
}
//测试给定的三条边构成的三角形是否与期待值一样
@Test
publicvoidtestGetTriangleKind(){
assertEquals(this.expected,triangle.getTriangleKind(a,b,c));
}
}
九、参考文章
2、junit学习之hamcrest、testSuite介绍及测试原则
Eclipse下导入外部jar包的3种方式
Eclipse中怎么使用junit测试
测试辅助工具hamcrest
使用EclEmma进行覆盖测试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 junit hamcrest eclemma 使用 三角形 类型 判定 代码