有些方法参数有许多特殊值,或者说他的参数分为很多歌区域,为了简化类似的测试,JUnit4提出了“参数化测试”的概念,只写一个测试函数,把这若干种情况作为参数传递进去,一次性的完成测试。
首先,要为这种测试专门生成一个新的类,而不能与其他测试共用同一个类,此例中我们定义了一个SquareTest类。
然后,要为这个类指定一个Runner,而不能使用默认的Runner了,因为特殊的功能要用特殊的Runner嘛。@RunWith(Parameterized.class)这条语句就是为这个类指定了一个ParameterizedRunner。
第三步,定义一个待测试的类,并且定义两个变量,一个用于存放参数,一个用于存放期待的结果。
接下来,定义测试数据的集合,就像下面的data()方法,该方法可以任意命名,但是必须使用@Parameters标注进行修饰。这个方法的框架就不予解释了,大家只需要注意其中的数据,是一个二维数组,数据两两一组,每组中的这两个数据,一个是参数,一个是你预期的结果。比如我们的第一组{2, 4},2就是参数,4就是预期的结果。这两个数据的顺序无所谓,谁前谁后都可以。
之后是构造函数,其功能就是对先前定义的两个参数进行初始化。在这里你可要注意一下参数的顺序了,要和上面的数据集合的顺序保持一致。如果前面的顺序是{参数,期待的结果},那么你构造函数的顺序也要是“构造函数(参数, 期待的结果)”,反之亦然。最后就是写一个简单的测试例了,和前面介绍过的写法完全一样,在此就不多说。
代码如下:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class SquareTest ...{
private static Calculator calculator = new Calculator();
private int param;
private int result;
@Parameters
public static Collection data() ...{
return Arrays.asList(new Object[][]...{
{2, 4},
{0, 0},
{-3, 9},
});
}
//构造函数,对变量进行初始化
public SquareTest(int param, int result) ...{
this.param = param;
this.result = result;
}
@Test
public void square(){
calculator.square(param);
assertEquals(result, calculator.getResult());
}
}
分享到:
相关推荐
此时,传统的JUnit测试方法就显得有些力不从心了,因为每个测试方法只能对应一组测试数据。为了解决这个问题,JUnit引入了参数化测试的概念,使得开发者能够通过一次性的定义多个数据集来覆盖多种测试场景。 #### ...
在传统的JUnit测试中,每个测试用例通常对应一个固定的数据集,而在参数化测试中,数据可以从外部数据源(如数组、CSV文件或XML文件)动态获取。 ### 使用方法 1. **引入依赖**:首先,确保你的项目已经包含了...
它支持多种数据格式(如XML或CSV),使得测试数据的管理更加方便。通过DBUnit,开发者可以确保数据库操作不影响其他测试,提高了测试的隔离性。 **Unitils** 是一个集成了多种测试辅助功能的框架,`unitils-3.3-...
JUnit是一个流行的单元测试框架,它可以帮助开发者快速地编写和执行单元测试。 JUnit4的改进 ------------ JUnit4相比于JUnit3有了很大的改进。主要的改进点是引入了Annotation特性,简化了测试用例的编写。使用...
总结一下,JUnit4是一个强大的单元测试框架,它的注解驱动使得测试代码更简洁,断言机制便于检查代码行为,参数化测试、异常测试、分类和分组等功能则提高了测试的灵活性和覆盖率。通过合理使用JUnit4,开发者能够...
Junit还提供了多种注解以增强测试功能,如`@Before`和`@After`用于在每个测试方法之前和之后执行特定的代码,`@Test(expected = Exception.class)`用于验证方法是否抛出了预期的异常。在Junit 5中,引入了`@Before...
7. **参数化测试**:JUnit支持参数化的测试,允许用不同的输入数据运行同一个测试方法,通过`@Parameters`注解来提供参数列表。 8. **注解驱动**:JUnit4引入了注解,使得编写测试代码更加简洁,减少了对XML配置的...
单元测试是软件开发过程中的一个重要环节,它旨在对程序中的最小可测试单元——通常是函数或方法——进行验证,确保它们在各种预期输入下能正常工作。 JUnit的核心概念主要包括以下几个方面: 1. **测试类和测试...
Junit测试报告.pdf 本文档是关于Junit单元测试的报告,报告的主要内容包括实验目的、实验环境、实验内容、实验步骤、测试用例、测试计划、覆盖率测试报告等。 在实验目的中,报告指出Junit单元测试的目的是为了...
JUnit测试源代码是Java开发中的一个关键组成部分,它是一个用于编写和运行可重复的单元测试的框架。JUnit的出现极大地简化了Java软件的测试过程,使得开发者能够在编码阶段就能发现和修复错误,提高了代码质量。以下...
1. JUnit测试:JUnit是Java编程语言的一个开源测试框架,主要用于编写单元测试。它提供了一组注解(如@Test、@Before、@After)来定义测试用例、设置和清理方法。JUnit还支持异常断言、比较断言等多种断言方式,用于...
2. **定义公共静态方法来提供参数**:这个方法应该返回一个`Collection`对象,其中每个元素都是一个数组或`Object[]`,代表一组测试参数。这些参数可以是任何类型,只要它们与测试方法的参数匹配即可。 3. **定义...
2. **编写测试方法**:使用`@Test`注解标识测试方法,每个测试方法对应被测类的一个功能。方法内通过断言来验证预期结果,例如`assertEquals()`用于比较预期值和实际值。 3. **运行测试**:使用IDE(如Eclipse、...
JUnit提供断言方法来检查程序的输出是否符合预期,并且支持注解,使得测试代码更加简洁易读。通过集成到IDE(如Eclipse、IntelliJ IDEA)中,JUnit可以快速运行单个测试、整个测试套件或者仅修改过的部分,帮助...
在JUnit 4中,每个@Test注解的方法就是一个单元测试,每个测试方法应该独立于其他方法运行,避免了方法间的影响。 3. 更高级的JUnit 4特性 除了基本的断言和@Test注解外,JUnit 4还提供了许多高级特性,如: - `@...
除了基本的单元测试功能外,JUnit还支持多种高级功能,比如参数化测试、测试数据生成、并行测试等,这些特性大大增强了JUnit的灵活性和实用性。 总之,JUnit不仅是一个强大的单元测试框架,而且通过其丰富的特性和...
书中将详细介绍JUnit的安装、配置,以及如何创建和运行第一个测试。 3. **断言与异常测试**:断言是单元测试的核心,用于检查代码预期的结果是否符合实际。书中会讲解JUnit的各种断言方法,包括基本类型断言、集合...