• JUnit-参数化测试


    JUnit-参数化测试

    参数化测试允许开发人员使用不同的值反复运行同一个测试。


    5个步骤创建参数化测试

    • 用 @RunWith(Parameterized.class) 来注释 test 类。
    • 创建一个由 @Parameters 注释的公共的静态方法,它返回一个对象的集合(数组)来作为测试数据集合。
    • 创建一个公共的构造函数,它接受和一行测试数据相等同的东西。
    • 为每一列测试数据创建一个实例变量。
    • 用实例变量作为测试数据的来源来创建你的测试用例。



    下面通过测试案例实现参数化测试




    创建一个PrimeNumberChecker.java类

    • 在这个类里实现一个validate()方法,对传进来的数据进行处理,并返回一个布尔值
    package 参数化测试;
    
    public class PrimeNumberChecker {
    
        public boolean validate(final Integer primeNumber){
    
            for(int i=2;i<(primeNumber/2);i++){
                if(primeNumber%i==0){
                    return false;
                }
            }
            return true;
    
        }
    
    
    }
    
    




    创建一个测试类PrimeNumberCheckerTest.java

    • @RunWith()的使用
    • @Parameterized.Parameters的使用
    package 参数化测试;
    
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.junit.runners.Parameterized;
    import org.junit.runners.Parameterized.Parameter;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.List;
    
    import static org.junit.Assert.assertEquals;
    
    @RunWith(Parameterized.class)
    public class PrimeNumberCheckerTest {
    
        private int inputNumber;
        private boolean expectedResult;
        private PrimeNumberChecker primeNumberChecker;
    
        @Before
        public void initialize() {
            primeNumberChecker = new PrimeNumberChecker();
        }
    
        public PrimeNumberCheckerTest(int inputNumber, boolean expectedResult) {
            this.inputNumber = inputNumber;
            this.expectedResult = expectedResult;
        }
    
    //    返回一个对象的集合来作为测试数据的集合
        @Parameterized.Parameters
        public static Collection primeNumbers() {
            return Arrays.asList(new Object[][] {
                    { 2, true},
                    { 6, false },
                    { 19, true },
                    { 22, false },
                    { 23, true }
            });
        }
    
        @Test
        public void testPrimeNumberChecker(){
            System.out.println("得到的参数是:"+inputNumber);
            assertEquals(expectedResult,primeNumberChecker.validate(inputNumber));
        }
    
    
    }
    
    




    创建一个TestRunner.java执行测试案例

    package 参数化测试;
    
    import org.junit.runner.JUnitCore;
    import org.junit.runner.Result;
    import org.junit.runner.notification.Failure;
    import 执行测试.TestJunit;
    
    public class TestRunner {
        public static void main(String[] args) {
    
            Result result = JUnitCore.runClasses(PrimeNumberCheckerTest.class);
    
            for(Failure failure:result.getFailures()){
                System.out.println(failure.toString());
            }
    
            System.out.println(result.wasSuccessful());
    
        }
    }
    
    




    测试结果

  • 相关阅读:
    python第八课
    python第七课
    python第六课
    python第五课
    Python基础30类-内置函数实现迭代器协议
    Python基础29类-内置函数(__format__,__slots__,__doc__,__module__,__del__,__call__)
    Python基础28类-内置函数(__getattribute__,__getitem__,__setitem__.__delittem__)
    Python基础27类-包装、组合方式授权、判断对象类型的方法
    Python基础26类-内置函数__setattr__,__getattr__,__delattr__
    Python基础25类-反射
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/12738161.html
Copyright © 2020-2023  润新知