zoukankan      html  css  js  c++  java
  • TestCase和TestSuite详解

    一、TestCast和TestSuite概念介绍

    TestCase:字面意思,测试用例。为一个或多个方法提供测试方法,一般是一个test。
    TestSuite:测试集合,即一组测试。一个test suite是把多个相关测试归入一组的快捷方式。如果自己没有定义,Junit会自动提供一个test suite ,包括TestCase中的所有测试。
    TestRunner:测试运行器。执行test suite的程序。

    TestSuite和TestCase都是继承自Test接口,同时,TestSuite的建立和使用依赖于TestCase实例,这儿注意的是每次执行一个TestCase里头的方法,都会按照setUp()、runTest()、tearDown()执行顺序进行方法的执行。因此,如果有涉及全局的操作可以重写setUp()、tearDown()在这方法里头操作。
    TestCase继承自Assert类,因此TestCase中可以直接使用Assert中的相关方法,Assert类提供了几个常用的判断方法,Assert的类图可以参照图:

    二、程序实例

    我们新建一个maven工程,工程建好后会自带一个junit依赖,如果没有的话,引入junit依赖

        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>

    我们建一个Caculator.java工具类,测试使用

    public class Calculator {
        
        public int add(int a,int b){
            return a+b;
        }
        
        public int plus(int a,int b){
            return a-b;
        }
    }

    2.1 TestCase使用

    使用说明: 

    1)访问权限都是public;
    2)返回类型都是void;
    3)没有参数;
    4)方法名以“test”开头。

     编写一下TestCaseDemo.java测试类

    public class TestCaseDemo extends TestCase{
        
        public void testAdd(){
            Calculator ca=new Calculator();
            assertEquals(14, ca.add(5, 9));
        }
        
        public void testPlus(){
            Calculator ca=new Calculator();
            assertEquals(14,ca.plus(5, 9));
        }    
        
    }

    测试结果如下:

    testAdd测试通过,testPlus测试失败,修改为assertEquals(14,ca.plus(23, 9));测试通过

    2.2TestSuit使用

    使用注意事项:

    1)必须以“suite”方法命名;
    2)suite方法的访问修饰权限必须为static;
    3)suite方法必须为静态方法;
    4)suite方法必须没有参数。

    用test suite测试全部的测试用例,或者是我们想要测试的类,而不用一个一个执行,节省时间,编写一个TestSuitDemo.java测试类

    public class TestSuitDemo{
        
        public static Test suite(){
            //创建TestSuite对象
            TestSuite testSuite=new TestSuite("All Test From TestCaseExample");
            //为TestSuite添加一个测试用例集合,参数为:ClasstestClass
            //通过参数可以知道,其实该参数就是TestCase的子类
            testSuite.addTestSuite(TestCaseDemo.class);
            //创建具体的测试用例
            Test test = TestSuite.createTest(TestCaseDemo.class, "testAdd");
            //添加一个具体的测试用例
            testSuite.addTest(test);
            return testSuite;
        }
    }

    测试结果如图:

    通过上图看到执行了三个实例,如果想只执行一个实例,把以下代码注释即可:

     testSuite.addTestSuite(TestCaseDemo.class);

    TestCase和TestSuite类是JUNIT中比较重要的两个类,TestCase和TestSuite可以认为是JAVA的合成设计模式在单元测试中的应用,其实即便我们没有自己声明和创建TestSuite的子类,而且运行的TestCase子类的过程中也会创建TestSuite类,并将要执行的TestCase子类的实例对象添加到TestSuite中去执行,其执行过程可以如图所示:

  • 相关阅读:
    紧接着上篇文章,实现类一个是标准的FIFO,一个是出队在头部入队不一定追加到末尾
    Queue接口的实现类竟然有一个是LinkedList,一个是优先队列(同一个接口,只改了不同的实现类,附源码)
    Spring的依赖注入的2种方式(1天时间)
    操作系统-文件目录(又发现一个数据结构)
    每天进步一点点-序列化和反序列(将对象写入硬盘文件and从硬盘文件读出对象)
    每天进步一点点-实例为导学-一个java对象序列化的例子
    每天进步一点点-Java IO操作-Java Serializable(对象序列化)的理解和总结
    Linux企业运维人员最常用150个命令汇总
    如何使用yum来下载RPM包而不进行安装
    试试Linux下的ip命令,ifconfig已经过时了
  • 原文地址:https://www.cnblogs.com/shawWey/p/10643822.html
Copyright © 2011-2022 走看看