telegram中文版的下载的网址在哪呢 参数化测试一直是津津乐道的话题,我们都知道JMeter有四种参数化方式:用户自定义变量、用户参数、CSV文件、函数助手,那么JUnit5有哪些参数化测试的方式呢?
JUnit5需要添加依赖才能使用参数化:
用来定义参数化测试,用来定义参数值:
执行结果:
参数值会匹配测试方法的参数列表,然后依次赋值,这里一共产生了3个测试。
是最简单的参数化方式,它是一个数组,支持以下数据类型:
示例:
值为null
不能用在基元类型的测试方法。
值为空,根据测试方法的参数类决定数据类型,支持, , , , 基元类型数组 (, 等), 对象数组 (, 等)
结合了前面两个
示例:
等价于:
参数化的值为枚举类型。
示例:telegram 中文版
其中的ChronoUnit是个日期枚举类。
ChronoUnit是接口TemporalUnit的实现类,如果测试方法的参数为TemporalUnit,那么需要给加上值:
因为JUnit5规定了的默认值的类型必须是枚举类型。
names属性用来指定使用哪些特定的枚举值:
mode属性用来指定使用模式,比如排除哪些枚举值telegram官网最新的下载是多少:
比如采用正则匹配:
参数值为factory方法,并且factory方法不能带参数。
示例:
除非是生命周期,否则factory方法必须是static。factory方法的返回值是能转换为的类型,比如, , , , , , , 对象数组, 或者基元类型数组,比如:
的属性如果省略了,那么JUnit Jupiter会找跟测试方法同名的factory方法,比如:
如果测试方法有多个参数,那么factory方法也应该返回多个:
其中是Arguments接口的static factory method,也可以换成。
factory方法也可以防止测试类外部:
参数化的值为csv格式的数据(默认逗号分隔),比如:
delimiter属性可以设置分隔字符。delimiterString属性可以设置分隔字符串(String而非char)。
更多输入输出示例如下:
注意,如果null引用的目标类型是基元类型,那么会报异常。
顾名思义,选择本地csv文件作为数据来源。
示例:
delimiter属性可以设置分隔字符。delimiterString属性可以设置分隔字符串(String而非char)。需要特别注意的是,开头的行会被认为是注释而略过。
自定义ArgumentsProvider。
示例:
MyArgumentsProvider必须是外部类或者static内部类。
JUnit Jupiter会对String类型进行隐式转换。比如:
更多转换示例:
也可以把String转换为自定义对象:
JUnit Jupiter会找到方法,然后把的值传入进去,进而把String类型转换为Book类型。转换的factory方法既可以是接受单个String参数的构造方法,也可以是接受单个String参数并返回目标类型的普通方法。详细规则如下(官方原文):
显式转换需要使用注解:
并实现ArgumentConverter:
如果只是简单类型转换,实现TypedArgumentConverter即可:
telegram官网的最新下载网站怎么找
JUnit Jupiter只内置了一个JavaTimeArgumentConverter,通过使用:
测试方法的多个参数可以聚合为一个ArgumentsAccessor参数,然后通过get来取值,示例:
也可以自定义Aggregator:
然后通过来使用:
借助于组合注解,我们可以进一步简化代码:
参数化测试生成的test,JUnit Jupiter给定了默认名字,我们可以通过name属性进行自定义。
示例:
结果:
注意如果要显示,需要使用两层,因为name是MessageFormat。
占位符说明如下:
本文介绍了JUnit5参数化测试的7种方式,分别是,Null and Empty Sources,,,,,,比较偏向于Java语法,符合JUnit单元测试框架的特征。另外还介绍了JUnit Jupiter的参数类型转换和参数聚合。最后,如果想要自定义参数化测试的名字,可以使用name属性实现。
参考资料:
https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests