计算机科学与技术系
实
验
报
告
专业名称
软件工程
课程名称
软件测试
项目名称
Junit 框架的配置和使用
班
级
学
号
姓
名
同组人员
无
实验日期
2018 年 3 月 15 日
一、实验 题目及实验 内容 :
1、实验题目:Junit 框架的自动配置与使用 2、实验内容:使用 Junit 进行自动化测试, 二 、实验目的 与要求 :
1、实验目的:使用 Junit 进行自动化测试,提高学生的测试意识,培养测试思维。
2、实验要求 (1)自动生成测试框架和测试类 (2)熟练掌握 Junit 的元数据、断言、测试套件、测试固件等 (3)完成对被测类的自动化测试 (4)提交实验报告 三 、实验 步骤
1、使用 Java 语言实现计算器类 Calculator package test1; public class Calculator {
private static int result ;//静态变量
/*加函数*/
public void add(int n) {
result = result +n;
}
/*减函数*/
public void substract(int n) {
result = result -n;
}
/*乘函数*/
public void multiply(int n) {
result = result *n;
}
/*除函数*/
public void devide(int n) {
if(n==0) {
System. out .println("分母不能为零");
}else
result = result /n;
}
/*平方函数*/
public void square(int n) {
result =n*n;
//System.out.println("nzhi"+result);
}
/*死循环*/
public void squareRoot(int n) {
for(int j=0;j<=n/2+1;j++){
if(j*j==n){
result =j;
}
}
}
/*结果清零*/
public void clear() {
result =0;
}
/*返回结果*/
public int getResult() {
return result ;
} } 2、自动生成 CalculatorTest 类,如下图:
图 1 创建测试类
图 2 为测试类命名 3、完善 CalculatorTest 类的代码,如下:
package test1; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; public class CalculatorTest {
private static Calculator calculator=new Calculator();
private static int nCount=0;//测试方法统计
@Before
public void setUp() {
calculator.clear();//计算器归零
}
@After
public void tearDown() throws Exception{
nCount++;
System.out.println("Test Done:"+nCount);
}
@Test
public void testAdd() {
calculator.add(2);
calculator.add(3);
assertEquals(5,calculator.getResult());
}
@Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8,calculator.getResult());
}
@Test
public void testMultiply() {
calculator.add(10);
calculator.multiply(6);
assertEquals(60,calculator.getResult());
}
/*验证 8 除以 2 等于 4*/
@Test
public void testDevide() {
calculator.add(8);
calculator.devide(0);
assertEquals(4, calculator.getResult());
}
@Test
public void testSquare() {
calculator.square(3);
assertEquals(9, calculator.getResult());
}
@Test
public void testSquareRoot() {
calculator.squareRoot(9);
assertEquals(3, calculator.getResult());
}
@Test
public void testClear() {
calculator.clear();
}
@Test
public void testGetResult() {
calculator.getResult();
} } 4、设计测试用例如下 表一 测试用例表 输入数据 执行条件 期望输出 实验结果 X1=2,X2=3 testAdd Result=5 Result=5 X1=10,X2=2 testSubstract Result=8 Result=8 X1=10,X2=6 testMultiply Result=60 Result=60 X1=8,X2=2 testDevide Result=4 Result=4 X1=8,X2=0 testDevide 程序报错:分母不能为零 程序报错:分母不能为零 X1=3 testSquare Result=9 Result=9 X1=9 testSquareRoot Result=9 Result=3
图 3
测试用例报错
图 4 测试用例正确运行 四 、 实验 小结 :
1、这次试验的程序中有几个需要改正的地方,第一个是减法函数,应该将减法函数为“result=result-n;”,这样才可以得到正确结果;第二个错误是除法函数,因为分母不能为零,而零也是int类型的数据,因此,我们应该在程序中增加n是否为零的判断,如果是,则在控制台下进行错误提示,否则程序正常运行;第三个错误是开平方函数,应将开平方函数中的死循环改为:
“for(int j=0; j<=n/2+1;j++){if(j*j==n){result=j;}}”,这样才得到正确的n的算术平方根。
2、通过这次实验,我们熟练的学会了使用Junit进行程序测试,我发现Junit这个插件十分的方便,因为我们以前测试程序是否正确,需要费尽心思编写主函数,一点一点的运行调试,而是用Junit可以省时省力,而且还很全面。因此,我们要努力学会更多的软件测试的插件,这样才能够让我们编写代码事半功倍。
3、实验一还有一个非常大的感触是:写一篇完整规范的实验报告真的很重要,我们不能够像原来一样随便复制粘贴,胡乱搞搞就凑成一篇实验报告,而应该真正的弄明白实验报告中的每一项,每一个测试用例的由来和期望结果等,认真负责的对待每一件事情。
得分(百分制)