我正在开发一个库,需要测试它。在我的类中定义了几个操作(作为函数),可以由客户端以任何顺序调用。
Operation1(param1, param2)
Operation2(param3)
.
.
.
OperationN(paramX, paramY, paramZ)
param1,param2等是整数/双
现在,我正在考虑编写一个测试代码来随机化操作的执行,这样就可以随机执行一系列M操作。每次调用操作时,都需要随机生成参数。
在Java中执行此操作的最佳方法是什么。
答案 0 :(得分:1)
您需要一个操作界面,例如
public interface Operation {
public void do();
}
为要执行实现接口的类的每个操作创建。各个参数可以传递给构造函数。
然后将所有实例放在类型操作列表中,随机化并迭代它。
List<Operation> ops = new Vector<Operation>();
ops.add(new ...);
Collections.shuffle();
for (Operation o: ops) {
o.do();
}
答案 1 :(得分:1)
随机测试似乎很有吸引力,因为它们似乎可以避免编写大量单独的测试。问题是你永远不能确定随机序列会遇到可能失败的边缘情况等。 IMO它们不能替代精心设计和实施的白盒测试。
对于像你这样的案例,我尝试设计一堆测试助手,以便于构建输入数据结构。例如,一个简单的语言+解析器,允许我将输入和预期输出表示为文本,嵌入在单元测试用例中或作为单独的文件。