为了用不同的参数测试同一个逻辑,需要写多个测试用例,出现代码冗余。一种不是很好的解决方案是在一个测试用例中采用循环的方式遍历参数。
@Test public void testAdd(){
int[][] array = new int[][]{
{2,1,1}, //1+1=2,能成功
{6,2,2}, //2+2!=6,不能成功
{7,2,5}, //2+5=7,能成功
};
for(int i=0; i<array.length; i++){
assertEquals(array[i][2], array[i][0]+array[i][1]);
}
}
这样在执行时有几个问题:1、出错了,难以精确定位是哪一对参数出错。2、前面的数据不能执行成功,后面的数据就不执行了。(上面的例子,2+5=7就不会执行)。
为了解决这个问题:
JUnit4引入了参数化测试。
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class MyTestcase {
private int sum ;
private int firstAddend;
private int secondAddend;
@Parameters
public static Collection<Integer[]> getData(){
return Arrays.asList(new Integer[][]{
{2,1,1},
{6,2,2},
{7,2,5},
});
}
public MyTestcase(int sum, int firstAddend, int secondAddend){
this.sum = sum;
this.firstAddend = firstAddend;
this.secondAddend = secondAddend;
}
@Test public void testDivide(){
assertEquals(sum, firstAddend + secondAddend);
}
}
执行时,为每套参数创建一个测试类实例,这样就解决了刚才的两个问题:
说明:
@RunWith(Parameterized.class):@RunWith用来指定测试运行器,这里指定的运行器是Parameterized.class。
@Parameters: 指定测试用例构成器使用的参数,要求是公有无参数的类方法,返回值要求能够造型为Collection<Object[]>。在实例化测试类时,将Object[]数组传给其构造器。
构造器:一般测试类可以采用Java默认的构造器,参数化测试类要求与@Parameters修饰的获取参数的方法的返回值对应。
分享到:
相关推荐
综上所述,“JUnit学习笔记”可能涵盖了JUnit的基本使用、核心概念、注解驱动的测试、异常处理、参数化测试,以及如何在开发环境中集成和使用JUnit进行测试。这份文档对于学习和掌握JUnit测试框架具有很高的参考价值...
其次,JUnit4支持参数化测试,这意味着一个测试方法可以使用不同的参数多次执行。`@Parameters`注解用于提供参数数据,`@Parameterized.Parameters`方法返回一个包含参数的集合。 异常测试也是JUnit4的一个重要特性...
5. 参数化测试:JUnit支持参数化测试,即同一个测试方法可以使用不同的输入数据执行多次,以覆盖多种情况。这通过`@Parameters`和`Parameterized`类来实现。 三、JUnit使用 1. 安装与集成:JUnit通常通过Maven或...
@RunWith:这个元数据允许我们指定一个测试运行器(Runner),可以自定义测试执行的方式,例如参数化测试、分类测试等。@FixMethodOrder:用于控制测试方法的执行顺序,可以指定按照字母顺序或者其他方式执行测试。@...
### JUnit4学习笔记——入门篇 #### 一、配置MyEclipse在项目中引入JUnit4.jar包 在使用JUnit4进行单元测试之前,首先需要确保开发环境已正确配置JUnit库。对于使用MyEclipse IDE的开发者来说,可以通过以下步骤...
7. **参数化测试**:使用 `@Parameterized` 注解可以创建参数化的测试,这样你可以对不同的输入值运行相同的测试逻辑,确保代码在各种情况下都正确。 8. **测试套件(Test Suites)**:通过 `@Suite` 注解,你可以...
- `@RunWith`:指定测试运行器,例如`@RunWith(Parameterized.class)`用于参数化测试。 - `@Category`:分类测试,方便组织和筛选测试。 **六、测试结果** JUnit会显示测试的通过和失败情况,包括测试用例总数、...
此外,JUnit4引入了参数化测试(Parameterized Tests),可以通过不同的输入参数运行同一个测试方法,这对于验证方法对各种输入的处理能力非常有用。 除了基本的断言,JUnit4还提供了更多的断言选项,如`assertNull...
7. **参数化测试**:利用`@Parameters`和`@Test`结合,实现参数化的测试用例,以覆盖多种输入情况。 8. **测试规则**:理解`@Rule`和`@ClassRule`,如何自定义测试规则,例如使用`TemporaryFolder`规则创建临时文件...
5. 运行器(Runner):JUnit 4.0支持自定义运行器,如`BlockJUnit4ClassRunner`是默认的运行器,还有`Parameterized`用于参数化测试,`Suite`用于测试套件。 三、实战应用 1. 创建测试类:创建一个名为`MyTest`的...
4. **参数化测试**:JUnit 4引入了参数化测试,允许用不同的参数多次运行同一个测试。 5. **分类测试(Category)**:JUnit 4.9开始支持分类测试,可以将测试分组,便于管理和运行特定类型的测试。 6. **测试规则...
2. **参数化测试**:`@Parameterized`注解允许使用不同参数运行同一测试方法,提高测试覆盖率。 3. **定时器测试**:`@Test(timeout = milliseconds)`确保测试方法不会无限制地运行下去。 4. **分类测试**:`@...
- **参数化测试(Parameterized Tests)**:可以为同一测试方法提供不同输入,实现多组测试。 - **异常测试(Exception Testing)**:使用@Test注解的expected属性,检查方法是否抛出预期的异常。 - **假设...
6. **参数化测试**:`@Parameters`注解可以将数据集与测试方法关联,实现参数化的测试用例。 7. **定时器**:`@Test(timeout =毫秒数)`可以限制测试方法的执行时间,防止死循环。 在进行单元测试时,遵循一些最佳...
4. **自动化测试框架**:如JUnit(Java)、pytest(Python)等,结合断言库,可以构建自动化接口测试套件。 5. **持续集成工具**:如Jenkins、Travis CI等,可以将接口测试集成到持续集成流程中,确保每次代码提交...
### Selenium+Eclipse+JUnit+TestNG自动化测试学习笔记 #### 一、环境搭建与配置 **1. 安装 JDK** - **版本**: JDK 1.7 - **下载地址**: ...
这在进行更复杂测试场景,如参数化测试、模拟对象测试等时非常有用。例如,`Parameterized`运行器可用于测试多种输入参数的情况: ```java @RunWith(Parameterized.class) public class ParameterizedTest { ...
4. **设置报告参数**:在你的测试类或`TestRunner`类中,配置`junitreport`的参数,如报告的输出路径、格式等。例如: ```java @Override protected void setUp() throws Exception { super.setUp(); reporter ...
5. 参数化测试:如果你需要使用不同的参数多次运行同一个测试,那么可以使用 JUnit的参数化测试。 6. 模拟对象:在很多情况下,你可能需要模拟依赖对象以便于测试。JUnit 可以与模拟框架(如 Mockito)一起使用,...
- **参数化测试(Parameterized Tests)**:允许为测试方法提供不同的输入参数,从而实现对同一功能的多种情况的测试。 - **分类测试(Category)**:使用`@Category`注解,可以将测试分为不同类别,便于组织和...