如何使属性测试获得实体生成器可以返回的实体集合?



我最近开始使用junit-quickcheck探索基于属性的测试。我遇到过一个用例,其中属性必须接受一个实体列表(我有一个独立实体的生成器)。我试过下面的代码,它总是给出一个空列表。

@Property(trials = 5)
public void addingInDiffOrderResultsInSameResult(
List<@From(CusObjGen.class) CusObj> objs) {
}

谁能给我指路吗?

我通过创建另一个生成器使其工作,该生成器使用已经存在的实体生成器生成实体列表,像这样:

public class CusObjListGenerator extends Generator<List> {
public CusObjListGenerator () {
super(List.class);
}
@Override
public List<CusObj> generate(SourceOfRandomness random, GenerationStatus status) {
CusObjGen generator = gen().make(CusObjGen.class);
List<CusObj> objs = new ArrayList<>();
int randomNoOfEvents = random.nextInt(1, 15);
for (int i = 1; i <= randomNoOfEvents; i++) {
objs.add(generator.generate(random, status));
}
return objs;
}
}

最新更新