Java如何使用JUnit进行单元测试

发表于:2021-3-08 09:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:数据汪    来源:CSDN

  单元测试是什么?
  百度百科的解释是这样的:单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。
  简单的说,单元测试就是对你程序中最小的功能模块进行测试,在c语言里可能是一个函数,java中可能是一个方法或者类。
  目的就是为了提高代码的质量。
  Junit是什么?
  JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
  也就是说junit就是别人写好的单元测试框架,使用此框架你可以大大缩短你的测试时间和准确度(笔者现在还记得大一刚来的的时候,c语言写的小程序,每次都是重启测试,那种编译-输入--停止-编译的苦日子,很痛苦,今天用junit这个单元测试框架好多了)。
  注:eclipse已经自带JUnit, JUnit的当前常用版本分为3.X(需要手动添加),4.X(支持注解)
  我的这个版本的eclipse自带JUnit3.X的,本文以JUnit3.x为例进行测试。
  下面以 “求最大子数组之和”的例子,简单的介绍一下单元测试是什么,junit如何入门。
   packageedu.sau.maximun;2 public classSubArray {3 //求两个数中的最大
   public int max(int x, inty){5 if(x>y)6 returnx;7 else
   returny;9 }10
   //最大子数组之和
   public int maxSubArr(int[] arr){13 int sum = arr[0]; //最大值子数组和
   int sub_sum = arr[0];//中间值

   for(int i = 1; i
  以上代码实现了“最大子数组之和”的算法,共有max和maxSubArr两个方法,下面开始测试(重新创建一个新包,取名 test,所有测试都是再这个新包完成)。
  /**.sau.maximun.SubArray;importjunit.framework.TestCase;/***@authorm
  * @单元测试
  * @time 2016/10/7*/
  public class TestMaximun extendsTestCase {//对方法max进行测试
  public voidtestMax(){int x = 1; //测试数据
  int y = 2;int z = -1;
  SubArray sub= newSubArray();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 voidtestMaxSubArr(){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= newSubArray();
  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格式,通过断言来判断结果的正确行。
  现在大家已经会基本的单元测试,当然这只是非常简单的使用junit,后期我会写一些关于junit的更具体的介绍。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号