单元测试 – 如何对数据结构的内部(组织)进行单元测试?

我已经开始研究一个小型
ruby项目,该项目将包含许多不同数据结构和算法的示例实现.现在只是让我刷新我暂时没做过的事情,但我希望它有点像
Ruby Koans,有一堆为数据结构编写的单元测试,但实现为空(在另一个分支中完全实现).然后它可以用作一个很好的学习工具或代码kata.

但是,我无法想出一个编写测试的好方法.我不能只测试公共行为,因为这不一定会告诉我实施情况,这在这里很重要.例如,普通BST和红黑树的公共接口将是相同的,但RB树具有非常特定的数据组织要求.我该如何测试?

最佳答案 不知道你在做什么,但如果你想为各种数据结构提供通用接口,然后可以通过各种方式进一步实现和/或专业化,我不知道你怎么能为任何具体实现编写测试还不存在

您可以为公共接口编写测试,以确保所有实现都满足该接口指定的合同.例如.排序树的所有实现都应正确排序其元素等.作为旁注,这实际上不是单元测试,而是功能/验收测试.

对于红黑树,您可以编写一组附加(可选)测试,以验证在插入和插入后树正确重新排序.删除.不过,这可以而且应该通过公共接口进行测试.例如.向树中添加一系列元素,使树不平衡而不重新排序,然后检查树结构以确保它正确地重新排序.

点赞