我感觉它的设计意图就是为了解决我们有时候测试的时候,测试数据的构造不同,其他的均相同的情况下可能比较有用
参数化测试的编写稍微有点麻烦(当然这是相对于 JUnit 中其它特性而言):
1. 为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
2. 为测试类声明几个变量,分别用于存放期望值和测试所用数据。
3. 为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,
返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
4. 为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
5. 编写测试方法,使用定义的变量作为参数进行测试。
import java.util.Collection;
import junit.framework.Assert;
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 ParameterizedTest {
private String extected;
private String target;
public ParameterizedTest(String target,String extected) {
super();
this.target = target;
this.extected = extected;
}
@Parameters
public static Collection<?> contructData(){
return Arrays.asList(new Object[][]{
{"aaa","AAA"},
{null,null},
{"",""},
{"BBB","BBB"}
});
}
@Parameters
public static Collection<?> contructData1(){
return Arrays.asList(new Object[][]{
{"aaa1","AAA1"},
{null,null},
{"",""},
{"BBB1","BBB1"}
});
}
public String toUpperCase(String str){
if(null == str){
return str;
}
return str.toUpperCase();
}
@Test
public void testUpperCase(){
Assert.assertEquals(extected, toUpperCase(target));
}
}
同时,感觉这个地方实现的不好的地方就是整个类只有第一个标有@Parameters的static静态方法起作用,也就
限制了它的灵活使用。随便看下它里面对注解的处理部分
List<FrameworkMethod> methods= testClass
.getAnnotatedMethods(Parameters.class);
for (FrameworkMethod each : methods) {
int modifiers= each.getMethod().getModifiers();
if (Modifier.isStatic(modifiers) && Modifier.isPublic(modifiers))
return each;
}
实际上它是找到第一个就返回了,其实我们如果为了灵活的话,可以再标注下,然后去找一个特殊的方法,然后多个方法的parametrized的测试就可以放到一个类里面了。当然这么做的话,肯定有有一些其他的不好的地方。
分享到:
相关推荐
Junit参数化测试的使用方法博客 的源代码
junit参数化测试的使用方法,数据驱动:数组,excel
Feed4JUnit能够让编写JUnit的参数化测试变得简便,并为这些测试提供预定义或随机测试数据。它能够从业务分析人员定义好的CVS或 Excel文件读取测试用例数据并在构建/单元测试框架中报告测试成功。利用Feed4JUnit能够...
1.Junit4 配置 2.Junit4 生成单元测试 3.Junit4 语法讲解 4.Junit4 参数化 5.Junit4 打包集成测试 6.Junit4 高级应用
JUnit是Java编程语言的单元测试框架,用于编写和可重复运行的自动化测试。JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有(下列注解标示了单元测试的不同运行阶段执行的代码): @BeforeClass 全局只会...
Junit4之后只要在每个测试方法标注@Test注解即可,方法名可以任意取。 ★ 断言(assertion):是测试框架里面的若干个方法,用来判断某个语句的结果是否为真或判断是否与预期相符。 比如assertTrue()和assertEquals()...
junit4单元测试使用步骤 参数化单元测试示例 spring集成junit4示例
启动后,自动化测试,并判断执行结果, 不需要人为的干预。 只需要查看最后结果,就知道整个项目的方法接口是否通畅。 每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句。 添加,删除,...
本文档中源码为软件测试课程实验相关内容,压缩包内也有详细需求说明。大致功能为测试一个输入为税前工资输出为税后工资的方法的单元测试,通过设计测试用例实现等价类划分测试,边界值分析测试以及路径覆盖测试
本次博客更新的是,上次使用eclise+JUint测试完,想用idea进行测试,同时maven项目已经学习过了,想学习新的知识为前提。 知识储备, Gradle是什么 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建...
JUnit参数化测试参数化测试是使用不同的值一次又一次地执行相同的测试。 它可以帮助开发人员节省执行相同测试的时间,该测试仅在输入内容和预期结果上有所不同。 ->乘法示例;)
本文来自于cnblogs,本文主要介绍了没有junit工具下如何测试...是一套基于java的测试框架,目前有两个版本:Junit3,Junit4.Junit中最常用的两个测试方法是:assertEquals(expect,actual);用于非数组型的数据的比较;
参数化测试提供数据。 test :声明一个 JUnit 4 测试方法。 jMock 模板 context : 声明一个Mockery实例。 expectations :声明用于指定期望的上下文。 mock :声明一个模拟实例。 rv :声明一个模拟的返回值。 ...
lambdatarunner 使用Lambdas参数化测试的Junit跑步者在JUnit中创建参数化测试的一个问题是,这样做的方法既倾向于将数据与代码分离,又缺乏类型安全性,因为没有编译时检查所提供的数据是否与测试期望的数据匹配。...
(2)基于Junit5完成单元测试(至少基本测试与参数化测试) 2. 以下为JDK中ArrayList的remove()方法,请应用白盒测试方法设计测试用例,并应用JUnit5完成测试。要求:(1)完成分别满足语句覆盖、判定覆盖、条件...
将参数的输入、请求执行、结果解析、数据验证、数据准备与清理各个环节都做了封装,以数据文本文件为接口,降低自动化测试过程中case书写的难度。数据驱动测试执行是该框架的主要特征,都体现在case“文件”中: 1. ...
JUnit工具箱提供了一些有用的类,用于使用JUnit编写自动化测试: 用于使用多个并发运行的线程编写压力测试的Helper类 帮助器类等待异步操作 使用多个工作线程同时执行所有@Test方法以及使用不同参数分配对@Theory...
用JUnit进行单元测试使用JUnit测试一组方法(最大和总和)要求完整的NumberUtil.java 使用流实现max和sum方法。 在这些方法中,如果列表为空,则引发异常。... 考虑使用参数化测试。 (这不是必需的。)JUnit结果