zoukankan      html  css  js  c++  java
  • Junit初级编码(二)探索JUnit核心

    序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试。现在就让我们慢慢学习Junit单元测试框架

    一、Junit的三个核心概念测试类、测试集、测试运行器

    1 测试类

    公共的,包含一个无参构造函数,含有一个或几个测试方法(@Test注释)。没有为测试类定义测试集时,JUnit自动提供一个测试集。

    2 测试集

    把多个相关测试归入一组,可以使一个测试类,也可以包含多个测试类。

    3 测试运行器

    执行测试集的程序,JUnit4提供了一些测试运行器,如下:

     
    运行器 目的
    org.junit.internal.runners.JUnit38ClassRunner 作用仅仅是为了向后兼容,将测试用例作为JUnit3.8的测试用例来启动
    org.junit.runners.JUnit4 作为JUnit4的测试用来来启动
    org.junit.runners.Suite Suite是一个包含不同测试的容器,同时Suite也是一个运行器,可以运行一个测试类中的所有以@Test注释的方法
    org.junit.runners.Parameterized 可以使用不同参数来运行相同的测试集

    二、使用参数化运行器Parameterized运行测试的例子

    举一个org.junit.runners.Parameterized的例子:

    在这个例子中,可以指定运行器为Parameterized,测运行器的特点是允许你使用不同的参数多次运行同一个测试。

    解释:

    1 必须使用@RunWith注释,并且Parameterized.class为参数值

    2 声明变量

    3 提供一个用@Parameters注释的方法

    。。。未完待续。

    package com;
    
    import static org.junit.Assert.*;
    
    import java.util.Arrays;
    import java.util.Collection;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.junit.runners.Parameterized.Parameters;
    import org.junit.runners.Parameterized;
    
    @RunWith(value = Parameterized.class)//指定测试运行器
    public class ParameterizedTest {
    
        private double expected;
        private double valueOne;
        private double valueTwo;
    
        @Parameters
        public static Collection<Integer[]> getTestParameters() {
            return Arrays.asList(new Integer[][] { { 2, 1, 1 }, { 3, 2, 1 },
                    { 4, 3, 1 } });
        }
    
        public ParameterizedTest(double expected, double valueOne, double valueTwo) {
            this.expected = expected;
            this.valueOne = valueOne;
            this.valueTwo = valueTwo;
        }
        
        @Test
        public void sum(){
            APP app = new APP();
            assertEquals(expected,app.getSum(valueOne, valueTwo),0);
            System.out.println("--");
        }
    }

    三、JUnitCore facade

    org.junit.runner.JUnitCore,可以运行任何测试运行器

    JUnitCore决定使用哪个运行器来运行你的测试。

    四、自定义测试运行器 

    需继承自org.junit.runner.Runner.Runner类

    五、用Suite来组合测试

    Suite对象其实是一个运行器(Runner),可以执行测试类中所有@Test注释的方法。

    测试集还可以嵌套,看下面示例:

    //测试类A
    public class TestCaseA{
        @Test
        public void testA1(){
            //omitted
        }
    }
    //测试类B
    public class TestCaseB{
        @Test
        public void testB1(){
            //omitted
        }
    }
    //测试集合A
    @RunWith(Suite.class)
    @SuiteClasses({TestCaseA.class})
    public class TestSuiteA {
    
    }
    //测试集合B
    @RunWith(Suite.class)
    @SuiteClasses({TestCaseB.class})
    public class TestSuiteB {
    
    }
    
    //测试集合,把测试集合A和测试集合B合成为一个大的测试集合
    @RunWith(Suite.class)
    @SuiteClasses({TestSuiteA.class,TestSuiteB.class})
    public class MasterTestSuite {
    
    }
  • 相关阅读:
    override与new的区别
    预处理指令关键字
    索引器
    可选参数与命名参数
    sealed关键字
    获取变量默认值
    is和as
    throw和throw ex的区别
    位操作
    unsafe关键字
  • 原文地址:https://www.cnblogs.com/yaochc/p/4965171.html
Copyright © 2011-2022 走看看