如何测试数据结构是否正确构建?我正在实现一种修改后的基数树,并且想知道如何检查您的数据结构是否正确构建。
考虑一棵TreeNode {String, Int}
节点树。您总是希望将新子节点附加到值等于 0 的最深节点,如下例所示:
根,0 - Child_1, 5 - Child_2, 0 - Child_3, 1
问题是,如果树结构按照您的意愿构建,如何进行单元测试?TreeNode 只有一种方法,即insert
.
到目前为止,我的想法是编写TreeVisitor
它将遍历树并将每个节点转换为字符串。上面示例中的树可能如下所示:
[根, 0 [Child_1, 5][Child_2, 0 [Child_3, 1]]]
知道构建树的算法,如果我知道我要插入什么元素,我可以手动创建这样的字符串。我的单元测试看起来像这样(使用相同的示例)。
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) 是否按预期工作:-)