前言
在实际程序代码中,入参往往都是实体enty类型,例如经常见到的person实例
一、无自定义构造函数的类
static class Data {
String s
Integer i
Date d
@Override
public String toString() {
return "{" +
"s='" + s + '\'' +
", i=" + i +
", d=" + d +
'}';
}
}
def 'generate type with map'() {
setup:
def gen = Gen.type(Data, s: Gen.string(10), i: Gen.integer, d: Gen.date)
when:
Data result = gen.iterator().next()
then:
println(result.toString())
result.d
result.i
result.s
}
运行结果:
{s=’@`r^[l5R)N’, i=-496823564, d=Sat Oct 23 09:29:52 CST 162541773}
二、自定义构造函数类自动生成器
static class TupleData {
String s
Integer i
Date d
TupleData(String s, Integer i, Date d) {
this.s = s
this.i = i
this.d = d
}
@Override
public String toString() {
return "{" +
"s='" + s + '\'' +
", i=" + i +
", d=" + d +
'}';
}
}
def 'generate type with tuple'() {
expect:
result instanceof TupleData
println(result)
where:
result << Gen.type(TupleData, Gen.string(5), Gen.value(42), Gen.date).take(5)
}
运行结果:
{s=’<g7DU’, i=42, d=Sun Jun 02 18:51:15 CST 104123630}
{s=’^"4P8’, i=42, d=Sat Oct 30 13:49:53 CST 14072230}
{s=‘g4gb@’, i=42, d=Sat Jul 29 21:34:24 CST 26136263}
{s=’’, i=42, d=Mon May 14 05:24:05 CST 116002682}
{s=’^|eQ4’, i=42, d=Sun Dec 07 19:41:59 CST 230688036}
总结
有无自定义构造函数的类,自动生成数据的形式有些不同。