软件质量保证与测试技术实验报告(四)——JUnit单元测试

1.实验名称——JUnit单元测试

2.实验目的

(1)利用Junit进行单元测试,理解单元测试的任务、同时理解这类测试工具的实现原理;
(2)理解断言的基本概念和断言测试方法;

3.实验内容

题目1:完成课件中Score_List的单元测试。
题目2:这是一个简单的计算器类——Computer,能够实现两个整数的加、减、乘、除运算(具体代码见附录C),请利用Junit进行单元测试。

4.实验过程

题目1:完成课件中Score_List的单元测试:从分数表中查找最大值。
Score_List.java

package Score;
public class Score_List {
  public static int maximum(int[] list) {
    int index;
    int max = Integer.MIN_VALUE;
    if(list.length == 0)
      {
        throw new RuntimeException("空表");
      }
    for(index = 0; index<=list.length-1; index++)   
      {
          if(list[index]>max) max = list[index];
      }
      return max;
  }
}

Score_ListTest.java

package Score;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class Score_ListTest extends TestCase 
{
    public Score_ListTest(String testName)
    {
    super(testName);
    }
    
    //测试表中有3个分数
    public void testOne() 
    {
        int[] list = new int[3];
         list[0] = 7;
         list[1] = 9;
         list[2] = 8;
         int expResult = 9;
         int result = Score_List.maximum(list);
         assertEquals(expResult, result);
    }
    
    //测试表中有1个分数
    public void testTwo() 
    {
        int[] list = new int[1];
        list[0] = 9;        
        int expResult = 9;
        int result = Score_List.maximum(list);
        assertEquals(expResult, result);
     }
    
    //测试表为空的情况
    public void testThree() 
    {
        try{      
        Score_List.maximum(new int[] {});
        fail("这里应抛出而没有抛出异常");
        }
        catch(RuntimeException e){
          assertTrue(true);
        }
    }
    public static  TestSuite suite()
    {
     TestSuite suite=new TestSuite();
     suite.addTest(new Score_ListTest("testOne"));
     suite.addTest(new Score_ListTest("testTwo"));
     suite.addTest(new Score_ListTest("testThree"));  
     return suite;
    }
  }

运行截图:
在这里插入图片描述
题目2:这是一个简单的计算器类——Computer,能够实现两个整数的加、减、乘、除运算(具体代码见附录C),请利用Junit进行单元测试。
Computer.java

package test;
public class Computer {
  private int a;
  private int b;
  public Computer(int x,int y)
  {
    a=x;
    b=y;
  }
  public int add(){return a+b;}
  public int minus(){return a-b;}
  public int multiply(){return a*b;}
  public int divide()
  {
    if(b!=0) return a/b;
    else return 0;
  }
}

ComputerTest.java

package test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class ComputerTest extends TestCase
{
  Computer a;
  public ComputerTest(String testName)
    {
      super(testName);
    }
  protected void setup()
  {
    a=new Computer(1,2);
  }
  public void testAdd() 
    {
     setup();
         int expResult = 3;
         int result = a.add();
         assertEquals(expResult, result);
    }
  public void testMinus() 
    {
     setup();
     int expResult = -1;
         int result = a.minus();
         assertEquals(expResult, result);
    }
  public void testMultiply() 
    {
     setup();
         int expResult = 2;
         int result = a.multiply();
         assertEquals(expResult, result);
    }
  public void testDivide() 
    {
     setup();
         int expResult = 0;
         int result = a.divide();
         assertEquals(expResult, result);
    }
  public static TestSuite suite()
    {
     TestSuite suite=new TestSuite();
     suite.addTest(new ComputerTest("testAdd"));
     suite.addTest(new ComputerTest("testMinus")); 
     suite.addTest(new ComputerTest("testMultiply")); 
     suite.addTest(new ComputerTest("testDivide")); 
     return suite;
    }
}

在这里插入图片描述

5.实验心得

通过本次实验,我学会了利用Junit进行单元测试,理解了单元测试的任务和这类测试工具的实现原理,并且理解了断言的基本概念和断言测试方法。

附录:Computer类源代码

public class Computer
{
private int a;
private int b;

public Computer(int x,int y)
{ a=x;
 b=y;
}

public int add()
{
   return a+b;
}
public int minus()
{
   return a-b;
}

public int multiply()
{
   return a*b;
}

public int divide()
{
   if(b!=0)
     return a/b;
   else 
     return 0;
}
}

  • 9
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
单元测试报告 版本:V1.3 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 目 录 1 简介 2 1.1 目的 2 1.2 背景 2 1.3 范围 2 2 测试用例清单 2 3 功能测试分析 2 4 边界测试分析 2 5 覆盖率分析 2 6 内存使用分析 2 7 典型缺陷记录 3 7.1 缺陷1 3 7.1.1 表现 3 7.1.2 原因 3 7.1.3 方案 3 8 测试数据分析 3 8.1 测试有效性分析 3 8.2 测试效率分析 3 9 产品质量分析 4 10 测试结论 4 简介 目的 【描述该单元测试报告的目的。】 背景 【描述单元测试报告的背景,单元测试活动目的。如无特殊背景信息,可裁剪。】 范围 【说明该单元测试报告在整个项目周期的适用范围】 测试用例清单 模块 目标类 级别 用例类 用例描述 执行结果 备注 【被测的代码类】 【代码级别】 【Junit测试类1】 【意图描述】 【P/F】 【Junit测试类2】 功能测试分析 边界测试分析 覆盖率分析 目标类 级别 方法覆盖率 行覆盖率 备注 【被测的代码类】 【代码级别】 内存使用分析 典型缺陷记录 记录单元测试中所发现的典型缺陷或常见缺陷。供再次发现同类问题时,作为参考使用。 缺陷1 表现 【缺陷表现描述】 原因 【缺陷产生原因分析描述】 方案 【解决方案描述】 测试有效性分析 【统计实际发现的缺陷数据,分析与计划值产生偏差的原因,结合《项目量化管理计划》定义的阈值,确定是否采取相关措施】 计划发现缺陷数 致命 严重 一般 实际发现缺陷数 偏差分析 对策或调整措施 产品质量分析 【结合上述数据和信息,对本次测试的项目、产品的本身质量进行分析、评价和总结】 测试结论  【描述测试是否达到测试计划的目的,是否满足单元测试的结束条件。】

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘埃的塵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值