【发布时间】:2009-09-12 12:34:54
【问题描述】:
如何测试数据结构是否正确构建?我正在实现一种修改后的基数树,并且想知道如何检查您的数据结构是否正确构建。
考虑TreeNode {String, Int} 节点的树。
您总是希望将新子节点附加到值等于 0 的最深节点,如下例所示:
问题是,如果树形结构按照您的意愿构建,如何进行单元测试? TreeNode 只有一种方法,即insert。
到目前为止,我的想法是编写TreeVisitor,它将遍历树并将每个节点转换为字符串。
上面示例中的树可能如下所示:
知道构建树的算法,如果我知道我要插入什么元素,我可以手动创建这样的字符串。我的单元测试看起来像这样(使用相同的示例)。
TreeNode root = new TreeNode("Root", 0);
root.insert(new TreeNode("Child_1", 5));
root.insert(new TreeNode("Child_2", 0));
root.insert(new TreeNode("Child_3", 1));
TreeVisitor visitor = new TreeVisitor();
String expected = "[Root, 0 [Child_1, 5][Child_2, 0 [Child_3, 1]]]";
asssertEquals(expected, visitor.visit(root));
我觉得这不是最好的方法。首先,一旦访问者发生变化,所有测试都会失败(只需将[ ] 更改为( ))。此外,这种方法允许我测试非常小的树(我可以手动计算的那么大)。你会如何测试更大的?
一般问题是,如何编写测试来检查数据结构是否正确构建?
我想我可能把整个测试想法弄错了,因为我刚从十几个教程中测试 .Sum(a, b) 是否按预期工作:-)
【问题讨论】:
标签: java unit-testing tree tdd