`
liyixing1
  • 浏览: 957423 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

@Parameters Parameterized runner

 
阅读更多
先看一个例子


package test;

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

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

@RunWith(value = Parameterized.class)
public class ParameterTest {
private double expected;
private double valueOne;
private double valueTwo;

public ParameterTest(double expected, double valueOne, double valueTwo) {
this.expected = expected;
this.valueOne = valueOne;
this.valueTwo = valueTwo;
}

@Parameters
public static Collection<Integer[]> getTestParameters() {
return Arrays.asList(new Integer[][] { { 2, 1, 1 }, // expected,
// valueOne,
// valueTwo
{ 3, 2, 1 }, // expected, valueOne, valueTwo
{ 4, 3, 1 }, // expected, valueOne, valueTwo
});
}

@Test
public void sum() {
Calculator calc = new Calculator();
Assert.assertEquals(expected, calc.add(valueOne, valueTwo), 0);
}
}

通过在Calculator calc = new Calculator();设置断点后调试发现
sum被中断三次
每次this都指向不同的地址,可以发现每次test都会初始化test的环境。

在构造函数中设置断点,发现也中断三次,每次中断下来后可以看到的构造调用的时候的参数也是不一样的。每次的值都是getTestParameters中的三个值中的一个。当然getTestParameters只被调用一次。
可以确定每次构造之前,初始化了参数。

这里使用的runner是Parameterized 。要使用这个runner必须在test的class上面带有@RunWith,并且value=Parameterized的class。

其中必须有一个public的静态方法,它拥有@Parameters注解,来表示这个方法是初始化参数的。返回类型必须是Collection的无参方法。集合中的每个元素必须是数组,数组的长度必须相同。数组的参数个数必须和唯一的构造函数相同。如果public的构造函数有多个,就会抛出assertion
error
分享到:
评论

相关推荐

    10c Junit代码示例1

    import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class CalculatorTest { private int param; private int paramm; private int result; @Parameters public ...

    JUnit4详解

    import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class ParameterizedAddOperationTest { private int input1; private int input2; private int expectedResult; ...

    Junit 4.0 学习笔记

    5. 运行器(Runner):JUnit 4.0支持自定义运行器,如`BlockJUnit4ClassRunner`是默认的运行器,还有`Parameterized`用于参数化测试,`Suite`用于测试套件。 三、实战应用 1. 创建测试类:创建一个名为`MyTest`的...

    java自动化之自动化框架项目(第四天-常用变量解析到map)代码

    在这个例子中,`@Parameterized.Parameters`注解的`data()`方法返回了一个数据集合,JUnit会为每组数据运行一次`testWithVariable`测试方法。 通过这种方式,我们可以将变量解析到Map,然后利用JUnit的参数化测试...

    JavaunitParameterized

    import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class ParameterizedTest { private int input; private int expectedOutput; public ParameterizedTest(int ...

    Junit4测试总结

    JUnit4的`@Parameters`注解和`Parameterized`测试类可以实现参数化的测试,即用不同的输入数据多次运行同一个测试。 ```java @RunWith(Parameterized.class) public class ParameterizedTest { @Parameters ...

    Junit4测试用例示例

    5. `@RunWith`: 指定运行器(Runner),可以自定义测试行为。比如`@RunWith(Parameterized.class)`用于参数化测试。 三、异常测试 Junit4提供了断言方法来检测预期的异常。例如,`assertThrows()`可以捕获并验证...

    junit-4.11

    12. **JVM参数**:通过`junit.runner.Version`类可以获取JUnit的版本信息,而`junitparams.Parameters.isRunningInContinuousIntegration()`则可以检测是否在持续集成环境中运行。 总的来说,JUnit 4.11作为一款...

    junit最新版

    `@Parameters`注解用于提供参数集,`@Parameterized.Parameters`方法返回这些参数。 为了增强测试的灵活性,JUnit 4.12还引入了`Assume`类,它允许我们在测试开始前进行预条件检查。如果假设不成立,测试会被跳过而...

    junit-4.13源码,以及编译好的jar包

    5. **参数化测试**:`@Parameters`和`@ParameterizedTest`注解支持根据一组参数运行相同的测试逻辑,用于验证不同输入值下的行为。 6. **超时测试**:`@Test(timeout = 1000)`限制测试方法的执行时间,防止无尽的...

    junit4.10.rar

    这通过`@Parameters`和`@Parameterized`注解实现。 6. **超时测试**:可以设定测试方法的执行时间限制,如果超过这个时间,测试就会失败。通过`@Test(timeout =毫秒数)`实现。 7. **假设(Assumptions)**:`...

    Junit

    import org.junit.runners.Parameterized.Parameters; import java.util.Arrays; import java.util.Collection; @RunWith(Parameterized.class) public class ParameterizedTest { private int input1; private ...

    JUNIT4.X學習筆記(1)

    此外,`@RunWith`注解允许我们使用自定义的运行器(Runner)。这在进行更复杂测试场景,如参数化测试、模拟对象测试等时非常有用。例如,`Parameterized`运行器可用于测试多种输入参数的情况: ```java @RunWith...

    Junit4 basic concept

    import org.junit.runners.Parameterized.Parameters; import java.util.Arrays; import java.util.Collection; @RunWith(Parameterized.class) public class ParameterizedTest { private final String currency...

    Junit4教程

    import org.junit.runners.Parameterized.Parameters; import java.util.Arrays; import java.util.List; @RunWith(Parameterized.class) public class ParameterizedTest { private int input1; private int ...

    unit4工具类

    3. **参数化测试**:`@Parameters`注解和`@Parameterized`测试类可以实现参数化的测试,即同一个测试方法可以针对多组输入数据进行执行。 4. **异常断言**:JUnit 4提供了`assertThrows()`方法,可以直接断言一个...

    junit 测试 样例

    JUnit提供了`@RunWith`注解,允许我们使用特定的运行器(Runner)来控制测试执行。例如,`Parameterized`运行器可以让我们进行参数化测试: ```java @RunWith(Parameterized.class) public class ParameterizedTest...

    JUnit4使用

    9. **参数化测试**:使用`@Parameters`注解和`Parameterized` runner,可以创建参数化的测试用例,以测试不同输入值下的行为。 10. **Mocking and Stubbing**:虽然JUnit4自身不包含模拟(mocking)和桩(stubbing...

    JUnit Api(英文版)

    4. **参数化测试**:`@Parameters`和`Parameterized`类使得测试可以使用不同的参数集进行多次运行。 5. **假设(Assumptions)**:JUnit 4引入了`Assume`类,允许在测试开始前设定条件,如果条件不满足,测试会被跳...

Global site tag (gtag.js) - Google Analytics