测试用例&测试套件

举个栗子:

  1. 编写MyStack类模拟栈,并对其进行测试用例编写测试;
  2. 编写文件删除方法,并对其删除测试。 不再做演示,戳此获取代码

MyStack类:

  1. public class MyStatck {
  2.  
  3.    private String[] elements;
  4.    private int nextIndex;
  5.  
  6.    public MyStatck() {
  7.       elements = new String[100];
  8.       nextIndex = 0;
  9.    }
  10.  
  11.    public void push(String element) throws Exception {
  12.       if (nextIndex >= 100) {
  13.          throw new Exception("数组越界异常!");
  14.       }
  15.       elements[nextIndex++] = element;
  16.    }
  17.  
  18.    public String pop() throws Exception {
  19.       if (nextIndex <= 0) {
  20.          throw new Exception("数组越界异常!");
  21.       }
  22.       return elements[--nextIndex];
  23.    }
  24.  
  25.    public String top() throws Exception {
  26.       if (nextIndex <= 0) {
  27.          throw new Exception("数组越界异常!");
  28.       }
  29.       return elements[nextIndex - 1];
  30.    }
  31.  
  32. }

对push方法编写测试:

  1. public void testPush(){
  2.       MyStatck myStatck = new MyStatck();
  3.       //测试用例中对方法抛出的异常进行try-catch处理。
  4.       try {
  5.          myStatck.push("Hello World!");
  6.       } catch (Exception e) {
  7.          Assert.fail("push方法异常,测试失败。");
  8.       }
  9.       String result = null;
  10.       try {
  11.          result = myStatck.pop();
  12.       } catch (Exception e) {
  13.          e.printStackTrace();
  14.       }
  15.       //验证断言压入的字符串是否为"Hello World!"。
  16.       Assert.assertEquals("Hello World!", result);
  17.    }

虽然testPush测试用例中调用了pop方法,但对pop方法仍要创建新的测试用例:

测试中是可以使用其他方法,不然就没法进行测试了

  1. public void testPop(){
  2.  
  3.    MyStatck myStatck = new MyStatck();
  4.    try {
  5.       myStatck.push("Hello World!");
  6.    } catch (Exception e) {
  7.       e.printStackTrace();
  8.    }
  9.    String result = null;
  10.    try {
  11.       result = myStatck.pop();
  12.    } catch (Exception e) {
  13.       Assert.fail("pop方法异常,测试失败。");
  14.    }
  15.    //验证断言弹出的字符串是否为"Hello World!"。
  16.    Assert.assertEquals("Hello World!", result);
  17.  
  18. }

两个测试方法大致相同,但是侧重点不同。侧重对测试方法的断言判断。

每个test case只做一件事情,只测试一个方面。

随着项目的开发,类越来越多,测试也越来越多。单个测试的机械动作也会拖慢速度。那么就需要更简便的方法,只要点一下,就可以测试全部的测试用例——这种方法就是使用测试套件。

测试套件(TestSuite):可以将多个测试组合到一起,同时执行多个测试

创建测试套件约定:

  1. 在test源目录内创建测试类;
  2. 创建public static Test suite(){}方法。

贴代码

  1. public class TestAll extends TestCase {
  2.  
  3.    public static Test suite(){
  4.  
  5.       TestSuite suite = new TestSuite();
  6.       suite.addTestSuite(CalcTest.class);
  7.       suite.addTestSuite(DeleteAllTest.class);
  8.       suite.addTestSuite(MyStatckTest.class);
  9.  
  10.       return suite;
  11.  
  12.    }
  13. }

运行结果如图:

keep the bar green to keep the code clean——Junit详解(二)的更多相关文章

  1. keep the bar green to keep the code clean——Junit详解(一)

    测试用例 单元测试时每个开发人员必需掌握的,是保证开发过程中代码的准确性,无误性,保证代码质量.敏捷开发模式是先根据用户需求写测试用例,考虑基本所有用户所需要的情况,再写实现方法.单元测试有很多种,当 ...

  2. junit单元测试(keeps the bar green to keeps the code clean)

    error是程序错误,failure是测试错误. junit概要: JUnit是由 Erich Gamma (设计模式的创始人)和 Kent Beck (敏捷开发的创始人之一)编写的一个回归测试框架( ...

  3. 单元测试JUnit 4(二)——keeps the bar green to keeps the code clean

    1.Failure和Error Failure是指测试失败  Error是指测试程序本身出错  (int a=10/0) 2.JUnit常用注解 2.1 @RunWith: 可以更改测试运行器(继承o ...

  4. 单元测试JUnit 4 (一)——keeps the bar green to keeps the code clean

    1. 导读 Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例.Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写tes ...

  5. [转]OAuth 2.0 - Authorization Code授权方式详解

    本文转自:http://www.cnblogs.com/highend/archive/2012/07/06/oautn2_authorization_code.html I:OAuth 2.0 开发 ...

  6. 【转】Code First 属性详解

    下面解释每个配置的作用 Table :用于指定生成表的表名.架构信息. Column :用于指定生成数据表的列信息,如列名.数据类型.顺序等. Key :用于指定任何名称的属性作为主键列并且默认将此列 ...

  7. OAuth 2.0 - Authorization Code授权方式详解

    I:OAuth 2.0 开发前期准备 天上不会自然掉馅饼让你轻松地去访问到人家资源服务器里面的用户数据资源,所以你需要做的前期开发准备工作就是把AppKey, AppSecret取到手 新浪获取传送门 ...

  8. iOS Code Signing: 解惑详解

    iPhone开发的代码签名 代码签名确保代码的真实以及明确识别代码的来源.在代码运行在一个开发系统以前,以及在代码提交到Apple发布以前,Apple要求所有的的应用程序都必须进行数字签名.另外,Ap ...

  9. Action Bar详解(二)

    在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果. 一.添加A ...

随机推荐

  1. UE4 使用UGM制作血条

    声明:本文是自己做的项目,可能不是最好的方法,或有错误使用方式.各位不喜勿喷! HP进度 HP背景 将上面的资源拖到UE4中(使用UE4自带的颜色也可实现效果,具体参考官方教程 https://doc ...

  2. solarium atomic update

    https://github.com/solariumphp/solarium/issues/159

  3. kali/centos 更新 java

    kali 转自:http://blog.sina.com.cn/s/blog_5736d8870102w15u.html 墙内的论坛上和博客上有很多这样的文章了,不过一般过程都很复杂,让人看的头晕眼花 ...

  4. [好文要转]【关于block使用的5点注意事项】

    1.在使用block前需要对block指针做判空处理. 不判空直接使用,一旦指针为空直接产生崩溃. if (!self.isOnlyNet) { if (succBlock == NULL) { // ...

  5. iOS 分享至友盟分享

    iOS 友盟分享 这个主要是提到如何通过友盟去自定义分享的步骤: 一.肯定要去友盟官网下载最新的SDK包,然后将SDK导入到你的工程文件夹里面去: 二.注册友盟账号,将你的APP添加到你的账号里面然后 ...

  6. DebugLog 打印方法执行时间

    DebugLog 打印方法执行时间 用于方便调试性能问题的打印插件.给访法加上@DebugLog,就能输出该方法的调用参数,以及执行时间. Project gradle配置 // Top-level ...

  7. Javascript 字符串常用操作方法

    1.字符串转换 /* 你可以将一个数字,布尔值,或一个字符串对象转换为字符串 */ var num= 18; var str1 = num.toString(); //'18' var str2 = ...

  8. CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  9. EasyUI的combobox控件使用onchange 问题

    在项目中几次都遇到了同样的问题,现在都不知道怎样解决了! 路过的朋友们帮我看看嘛!谢谢了! 最后我想要实现的效果是这样的.   在下拉列表中不存在值.(这里的是下拉列表中存在值的!)  但是在我输入值 ...

  10. stm32串口输出丢失第一个字符的问题及原因

    因为TC和TXE 标志位在复位的时候会被置1,导致第一次没有发送. 所以在初始化串口的时候可以增加一句 USARTx->SR=0;(如 USART1->SR=0;)