本篇博客记录一下软件测试的第一次实验----------使用Junit进行软件测试
一、Junit, hamcrest & eclemma的安装
Junit和hamcrest我是通过导入jar包进行安装的,步骤如下:
选中建好的项目,右击,选择Build Path->Configure Build Path,转到下图界面:
点击 Add Exterbal JARs, 然后选择Junit和hamcrest对应的jar包
点击OK即导入成功!
eclemma我是在线安装的,步骤如下:
依次选择 Help ->Install New Software,转到下图界面
点击 Add,按下图输入Name与Location,Name随意填写,Location填写 http://update.eclemma.org/
之后选择EclEmma
再一路点击Next就可以了,安装完成之后重启eclipse,发现有这个出现即说明安装成功!
二、测试
实验要求:
Function triangle takes three integers a,b,c which are length of triangle sides; calculates whether the triangle is equilateral, isosceles, or scalene.
简而言之,就是判断一个三角形的类型。
除了老师要求的等边和等腰三角形外,我还多加了几个判断,总计6种,为边值超过范围,不构成三角形,等边三角形,等腰三角形,直角三角形,一般三角形,
分别返回"Sides value is out of range", "Not a triangle", "Equilateral", "Isosceles", "RtTriangle", "Scalene"。
判断函数如下:
1 // 获取三角形类型 2 3 public String GetTriangleType() 4 { 5 if(side1 < 1 || side1 > 100 || side2 < 1 || side2 > 100 || side3 < 1 || side3 > 100) 6 return "Sides value is out of range"; //边值超出范围 7 if(side1 + side2 <= side3 || side1 + side3 <= side2 || side2 + side3 <= side1) 8 return "Not a triangle"; //不能构成三角形 9 if(side1 == side2 && side2 == side3) //等边三角形10 return "Equilateral";11 else if(side1 == side2 || side2 == side3 || side1 == side3)12 //等腰三角形13 return "Isosceles";14 else if(IsRtTriangle(side1, side2, side3)) //直角三角形15 return "RtTriangle";16 else //一般三角形17 return "Scalene";18 }19 20 // 判断是否为直角三角形21 private boolean IsRtTriangle(int a, int b, int c)22 {23 int a_2 = a*a;24 int b_2 = b*b;25 int c_2 = c*c;26 27 if(a_2 + b_2 == c_2 || a_2 + c_2 == b_2 || b_2 + c_2 == a_2)28 return true;29 30 return false;31 }
测试数据方面,我运用了参数化测试,测试数据集合如下:
前三个数据为三角形的三边,第四个boolean变量代表是否为直角三角形,用来测试Triangle类的IsRtTriangle方法,最后一个代表三角形种类,测试GetTriangleType方法。
测试运行结果如下:
可以看到40个测试用例全部通过!
用eclemma执行结果如下:
绿色代表全部执行过了
黄色代表未完全执行
红色代表未执行(这是Triangle类的main函数,在测试时未运行)
最后测试统计如下:
可以看到基本所有代码都执行过了。