zoukankan      html  css  js  c++  java
  • Parameterized tests

    Parameterized继承自Suite。Parameterized是在参数上实现了Suite,修饰一个测试类,然后提供多组构造函数的参数用于测试不同场景。

    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(Parameterized.class) 
    public class ParameterizedTest { 
    @Parameters 
    public static Collection<Object[]> data(){ 
    return Arrays.asList(new Object[][]{ 
    {0,"Zero"},{1,"One"},{2,"Two"},{3,"Three"},{4,"Four"},{5,"Five"},{6,"Six"} 
    }); 
    } 
    
    private int fInput; 
    private String fExpected; 
    
    public ParameterizedTest(int input,String expected){ 
    super(); 
    fInput=input; 
    fExpected=expected; 
    } 
    
    @Test 
    public void test(){ 
    System.out.println(fInput+":"+fExpected); 
    } 
    } 


    测试结果:

    0:Zero
    1:One
    2:Two
    3:Three
    4:Four
    5:Five
    6:Six

    我们首先需要用@RunWith(Parameterized.class)来修饰我们的测试类;然后建立一个带有参数的构造器,由于每次运行测试方法的时候都会调用构造器,所以会根据相应的参数来创建一个测试实例;最后需要用@Parameters修饰我们提供参数的静态方法,该静态方法需要返回List<Object[]>,List包含的是参数组,Object[]即按顺序提供的一组参数。

    另外一种使用参数的方法是通过 @Parameter 直接将数据注入属性。但是该属性必须是public。

    import java.util.Arrays; 
    import java.util.Collection; 
    import org.junit.Test; 
    import org.junit.runner.RunWith; 
    import org.junit.runners.Parameterized.Parameter; 
    import org.junit.runners.Parameterized.Parameters; 
    import org.junit.runners.Parameterized; 
    
    @RunWith(Parameterized.class) 
    public class ParameterizedTest02 { 
    @Parameters 
    public static Collection<Object[]> data(){ 
    return Arrays.asList(new Object[][]{ 
    {0,"Zero"},{1,"One"},{2,"Two"},{3,"Three"},{4,"Four"},{5,"Five"},{6,"Six"} 
    }); 
    } 
    
    @Parameter(value=1) 
    public String fInput; 
    @Parameter(value=0) 
    public int fExpected; 
    
    @Test 
    public void test(){ 
    System.out.println(fInput+":"+fExpected); 
    } 
    } 

    测试结果:

    Zero:0
    One:1
    Two:2
    Three:3
    Four:4
    Five:5
    Six:6
    对于上面的7组测试结果数据,在JUnit中显示为:

    http://img.blog.csdn.net/20150202215607177

    我们可以通过为 @Parameters加一个格式化 name 值来为每一组测试提供一个个性化的名字。name值允许包含占位符:

    • {index}:当前参数索引
    • {0},{1},...:第一(二,三等等)个参数值 

    如果把上面例子的@Parameters 改为 @Parameters(name="{index}:English({0})={1}]") ,则在JUnit中显示为:

    http://img.blog.csdn.net/20150202215607177

  • 相关阅读:
    Android开发 将数据保存到SD卡
    Android手机拨打电话的开发实例
    Android动画的实现 上
    Windows 7旗舰版搭建andriod 4.0开发环境记录
    [转载]Android开发常用调试技术记录
    暂停和恢复Activity Android
    Android传感器编程带实例
    用VS2010开发Android应用的配置方法
    安卓Activity界面切换添加动画特效
    在安卓开发中使用SQLite数据库操作实例
  • 原文地址:https://www.cnblogs.com/miniren/p/4638500.html
Copyright © 2011-2022 走看看