junit参数化测试的使用方法

 

JUnit参数化测试的五个步骤:
(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
(2)为测试类声明几个变量,分别用于存放期望值和测试所用数据。
(3)为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
(4)为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
(5)编写测试方法,使用定义的变量作为参数进行测试。

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

//(1)步骤一:测试类指定特殊的运行器org.junit.runners.Parameterized ,表示该类将不使用Junit内建的运行器运行,而使用参数化运行器运行
@RunWith(Parameterized.class)
public class CalculatorTest {
    private Calculator cal;

    // (2)步骤二:为测试类声明几个变量,分别用于存放期望值和测试所用数据。
    private int expected;
    private int input1;
    private int input2;

    @Before
    public void setUp() {
        cal = new Calculator();
    }

    // (3)步骤三:为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
    public CalculatorTest(int expected, int input1, int input2)// 构造方法,为各个参数赋值。
    {
        this.expected = expected;
        this.input1 = input1;
        this.input2 = input2;
    }

    // (4)步骤四:为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为
    // java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
    @Parameters
    public static Collection<Integer[]> prepareData() {
        Integer[][] object = { { 3, 1, 2 }, { -4, -1, -3 }, { 5, 0, 5 } };
        return Arrays.asList(object);// 数组转化成集合形式。
    }

    // (5)步骤五:编写测试方法,使用定义的变量作为参数进行测试。
    @Test
    public void testAdd() {
        System.out.println(this.input1+","+this.input2);
        assertEquals(this.expected, cal.add(this.input1, this.input2));// 注意是调用的成员变量。
    }

}
output:
1,2
-1,-3
0,5

 

http://blog.csdn.net/seven_3306/article/details/8069948

 

 

在Junit中,如果想要同时运行多个测试,需要使用两个注解,
@RunWith(Suite.class)和
@Suite.SuiteClasses(),

创建一个空类作为测试套件的入口。
使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。

通过这两个注解分别指定使用Suite运行器来运行测试,以及指定了运行哪些测试类,其中的,@RunWith(Suite.class)中可以继续指定Suite,这样Junit会再去寻找里面的测试类,一直找到能够执行的TestCase并执行之。

将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。
将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数。
保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数

package com.shengsiyuan.junit;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorTest.class,ParametersTest.class})

public class TestAll {//仅仅一个摆设,实际没用。

}

@BeforeClass、@AfterClass在所有的测试方法以及。@Before、@After执行之前执行。仅仅执行一次,相当于全局初始化和全局销毁,而@Before、@After有多少测试方法就执行多少次

@Ignore可以修饰忽略一个已被@Test修饰的测试方法,也可以修饰一个类,那么类下的所有方法都会被忽略。还可带一个可选的默认参数,用于说明原因。

http://blog.sina.com.cn/s/blog_5cd7f5b40100smao.html

 

时间: 2024-08-03 07:16:10

junit参数化测试的使用方法的相关文章

Feed4JUnit 1.0发布 JUnit参数化测试工具

Feed4Jhttp://www.aliyun.com/zixun/aggregation/29926.html">Unit可以让编写JUnit框架的参数化测试变得更容易,并提供预定义或随机生成的测试数据.测试案例数据可以从Excel或CSV文件.数据库或自定义数据源中读取,并且等价类测试可以轻松地自定义.基于Java注释的安装程序易于学习.应用和维护.JSR303.Java 7和Benerator的定义注释可自动识别和生成的通烟测试数据,将匹配约束条件.通过连接Benerator,你可以

Feed4JUnit 0.6.6发布 JUnit参数化测试工具

Feed4Jhttp://www.aliyun.com/zixun/aggregation/29926.html">Unit能够让编写JUnit的参数化测试变得简便,并为这些测试提供预定义或随机测试数据.它能够从业务分析人员定义好的CVS或Excel文件读取测试用例数据并在构建/单元测试框架中报告测试成功.利用Feed4JUnit能够很方便用随机但校验过的数据执行冒烟测试来提高代码代码覆盖率和发现由非常特殊的数据结构产生的Bug.此外还可以利用Feed4JUnit轻松定义等价类测试. 示例

《JUnit实战(第2版)》—— 2.2 运行参数化测试

2.2 运行参数化测试 JUnit实战(第2版) Parameterized(参数化)的测试运行器允许你使用不同的参数多次运行同一个测试.代码2.2给出一个Parameterized运行器的实例(你可以在第1章的源代码示例中找到这个测试). 代码2.2 参数化测试 要使用Parameterized的测试运行器来运行一个测试类,那就必须要满足以下要求.首先,测试类必须使用@RunWith注释,并且要将Parameterized类作为它的参数..\Lucene实战\1.tif.其次,你必须声明测试中

JUnit中的测试套件和参数化测试

JUnit4.x的测试运行器 JUnit为单元测试提供了默认的测试运行器,它的测试方法都是由它负责执行的 我们也可以定制自己的运行器,所有的运行器都继承自org.junit.runner.Runner 还可以使用org.junit.runer.RunWith注解 为每个测试类指定使用具体的运行器 一般情况下,默认测试运行器可以应对绝大多数的单元测试要求 当使用JUnit提供的一些高级特性,或者针对特殊需求定制JUnit测试方式时 显式的声明测试运行就必不可少了 JUnit4.x测试套件的创建步骤

《JUnit实战(第2版)》—第2章2.2节运行参数化测试

2.2 运行参数化测试JUnit实战(第2版)Parameterized(参数化)的测试运行器允许你使用不同的参数多次运行同一个测试.代码2.2给出一个Parameterized运行器的实例(你可以在第1章的源代码示例中找到这个测试). 代码2.2 参数化测试 要使用Parameterized的测试运行器来运行一个测试类,那就必须要满足以下要求.首先,测试类必须使用@RunWith注释,并且要将Parameterized类作为它的参数..Lucene实战1.tif.其次,你必须声明测试中所使用的

junit 如何测试一个方法中的每行代码是否都被执行过?

问题描述 junit 如何测试一个方法中的每行代码是否都被执行过? 如题 测试一个方法中的每行代码是否都被执行过?是否有多余的代码? 解决方案 要知道一个代码块里面的代码是否被执行过,其实可以在该代码块最后加个输出语句即可,如果输出语句有执行,那么 前面的代码必然有执行. 但执行效果不一定是你的预期效果罢了(因为代码不一定是符合你的设计需求的) 解决方案二: 是否有多余的代码? 这个应该有代码校验工具. 解决方案三: 你这说的是白盒测试中的覆盖率测试,如果代码中有分支语句,需要编写多个测试用例才

JUnit中获取测试类及方法的名称实现方法_java

在JUnit的测试中,有时候需要获得所属的类(Class)或者方法(Method)的名称,以方便记录日志什么的. 在JUnit中提供了TestName类来做到这一点,在org.junit.rules中: public class TestName extends TestWatcher { private String fName; @Override protected void starting(Description d) { fName = d.getMethodName(); } /*

《软件功能测试自动化实战教程》—第6章6.3节参数化测试

6.3 参数化测试软件功能测试自动化实战教程在UFT中可以通过把测试脚本中固定的值替换成参数的方式来扩展测试脚本,这个过程也叫参数化测试,能有效地提高测试的灵活性. 6.3.1 通过参数化测试来提高测试的灵活性可以通过参数化的方式,从外部数据源或数据产生器读取测试数据,从而扩大测试的覆盖面,提高测试的灵活性. 在UFT中,可以使用多种方式来对测试脚本进行参数化,数据表参数化(Data Table Parameters)是其中一种重要的方式,还有环境变量参数化(Environment Variab

《软件功能测试自动化实战教程》—第6章6.6节使用数据驱动器来参数化测试

6.6 使用数据驱动器来参数化测试软件功能测试自动化实战教程为了简化测试脚本参数化的过程,还提供了名为"Data Driver"的功能,可自动检测脚本中可能需要进行参数化的变量. 6.6.1 数据驱动器的使用方法"数据驱动"可以帮助测试人员快速找到需要参数化的测试对象.检查点的数据.例如,对于如图6-38所示的录制脚本,选择菜单"工具→数据驱动",出现如图6-39所示的界面. 在这个界面中,列出了测试步骤中所有可能需要进行参数化的变量. 6.6.