测试用例&测试套件

举个栗子:

  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. h5移动端让文字不可选中复制

    可以用css属性来控制 -moz-user-select:none; -webkit-user-select:none;

  2. Cheatsheet: 2016 10.01 ~ 10.31

    Docker Introduction to Docker Monitoring Database MongoDB: The Good, The Bad, and The Ugly Web 4 Key ...

  3. 如何将推送证书p12导出为pem

    1. 在Mac上启动Keychain助手,然后在login keychain中选择 Certificates分类.你将看到一个可展开的“Apple Development Push Services” ...

  4. python走起之第十七话

    选择器 #id 概述 根据给定的ID匹配一个元素. 使用任何的元字符(如 !"#$%&'()*+,./:;<=>?@[\]^`{|}~)作为名称的文本部分, 它必须被两个 ...

  5. GitHUb 代码提交遇到的问题以及解决办法

    git 添加代码出现以下错误: fatal: Unable to create 'F:/wamp/www/ThinkPhpStudy/.git/index.lock': File exists. If ...

  6. 关于前端CSS预处理器Sass的小知识!

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

  7. 利用eclips创建一个maven项目

    最近在写新项目,由于以前没有用过Maven,所以在创建Maven 项目的过程中遇到了很多问题...现在将整个创建过程给记录下来,方便查看 创建maven项目 创建完成项目后配置maven项目 修改we ...

  8. 学习_单片机/嵌入式_的资源链接。——Arvin

    ---恢复内容开始--- +单片机 -郭天祥的51单片机入门视频(链接: https://pan.baidu.com/s/1sl3xNDr 密码: 1zik) -51单片机20元购买资料公开(链接: ...

  9. Kafka 高可用设计

    Kafka 高可用设计 2016-02-28 杜亦舒 Kafka在早期版本中,并不提供高可用机制,一旦某个Broker宕机,其上所有Partition都无法继续提供服务,甚至发生数据丢失对于分布式系统 ...

  10. 在重新生成解决方案时,出现的错误:无法将文件“obj\x86\Debug\*.exe”复制到“obj\Debug\*.exe”。文件正由另一进程使用,因此该进程无法访问此文件

    此例是VS2010的CS项目. 在重新生成解决方案时,出现的错误. 解决步骤:先关闭解决方案,再在项目文件下的bin\Debug\*.exe删除这类之前生成得.exe文件,再在VS2010下重新生成.