QuickTheories:从列表中创建生成器的方法

时间:2017-11-04 18:20:41

标签: property-based-testing

使用java库QuickTheories,有一种从值列表中创建生成器的内置方法吗?

类似的东西:

public Gen<A> fromList(List<A> xs) {
    ....
}

滚动你自己并不是太糟糕,但似乎重新发明轮子:

List<TimeZone> timeZones = Arrays.stream(TimeZone.getAvailableIDs()).map(id -> TimeZone.getTimeZone(id));
return integers().allPositive().map(i -> timeZones.get(i % timeZones.size());

1 个答案:

答案 0 :(得分:4)

pick似乎正是您所需要的。

来自javadoc:

public <T> Gen<T> pick(java.util.List<T> ts)

通过从提供的中随机选择一个来生成值。缩小时,列表中较早的值将被视为“较小”。