JUnit


单元测试是什么?

     简单的说,单元测试就是对你程序中最小的功能模块进行测试,在c语言里可能是一个函数,java中可能是一个方法或者类。

目的就是为了提高代码的质量。

JUnit是什么?

     JUnit是一个Java语言的单元测试框架,可以大大缩短你的测试时间和准确度。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
       Eclipse已经自带JUnit, JUnit的当前常用版本分为3.X(需要手动添加),4.X(支持注解)


下面以 “求最大子数组之和”的例子,简单的介绍一下单元测试是什么,junit如何入门。

复制代码
 1 package edu.sau.maximun;
 2 public class SubArray {
 3   //求两个数中的最大
 4   public int max(int x, int y){
 5       if(x>y)
 6           return x;
 7       else
 8           return y;
 9   }
10   
11   //最大子数组之和
12   public int  maxSubArr(int[] arr){
13       int sum = arr[0];  //最大值子数组和
14       int sub_sum = arr[0];//中间值
15       
16       for(int i = 1; i<arr.length; i++){
17           sub_sum = max(arr[i],sub_sum+arr[i] );
18           sum = max(sub_sum,sum);
19       }
20       return sum;
21   }
22 }
复制代码

 

以上代码实现了“最大子数组之和”的算法,共有max和maxSubArr两个方法,下面开始测试(重新创建一个新包,取名 test,所有测试都是再这个新包完成)

复制代码
/**.sau.maximun.SubArray;
import junit.framework.TestCase;

/**
 * @author m
 * @单元测试
 * @time 2016/10/7
 */
public class TestMaximun extends TestCase {
    
    //对方法max进行测试
    public void testMax(){
        int x = 1;  //测试数据
        int y = 2;
        int z = -1;
        SubArray  sub = new SubArray();
        int result1 = sub.max(x, y);
        int result2 = sub.max(y,x);
        int result3 = sub.max(z, x);
        assertTrue(result1 == y);
        assertTrue(result2 == y);
        assertTrue(result3 == 1);
    }
    
    //对方法maxSubArr测试
    public void testMaxSubArr(){
        
        int arr1[] ={1,2,3,-1}; //测试用例
        int arr2[] = {1,2,-4,8,4,-4,6,-2,1};
        int  arr3[] ={-4,-2,-1,-3};
        int arr4[] = {-4,2,-4,2,-1};
        SubArray sub = new SubArray();
        
        
        assertTrue(sub.maxSubArr(arr1) == 6);
        assertTrue(sub.maxSubArr(arr2) == 14);
        assertTrue(sub.maxSubArr(arr3) == -1);
        assertTrue(sub.maxSubArr(arr4) == 2);
    }
}
复制代码

整个文件的结构目录如下:

 

 

程序单元测试的方法:-右击 测试类->Run as ->JUnit test
 

运行结果:(Errors:0,Failure:0 说明测试通过,如果出错,Failure是单元测试所期望的错误,说明你的代码结果不满足你的要求,Errors需要你查看系统的配置,检查代码。是不是手动输入快好多?)

 

 

 

说明:

 

总结:测试类需要继承junit.framework.TestCase类,测试方法命名需要按照public void TestXXXX格式,通过断言来判断结果的正确行。

 

测试范围一定要满足你的所有需求

   以测试testMaxSubArr为例,具体的测试样例及目的如下:  

用例编号

用例描述

       输入数据预期输出数据通过/不通过评价
   1检测能否实现最大数组求和的基本功能(一般情况)1,2,3,-16通过程序实现基本功能
2最大子数组处于数组中间(一般情况)1,2,-4,8,4,-4,6,-2,114通过程序实现基本功能
3数组元素均为负数,且第一个元素为最小(特殊情况)-4,-2,-1,-3-1通过程序实现特殊情况的求和
4数组中存在最大值相同的多个(>=2)子数组(特殊情况)-4,2,-4,2,-12通过程序能对多个相同子数组进行保留



  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值