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

标签 unit-testing data-structures

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

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

最佳答案

不确定您在做什么,但是如果您想为各种数据结构提供通用接口(interface),然后可以以各种方式进一步实现和/或专门化,我看不出您如何为任何具体实现编写测试尚不存在。

您可以为公共(public)接口(interface)编写测试,以确保所有实现都满足该接口(interface)指定的契约(Contract)。例如。排序树的所有实现都应该正确地对其元素进行排序等。作为旁注,这实际上不是单元测试,而是功能/验收测试。

对于红黑树,您可以编写一套额外的(可选)测试,以验证插入和删除后树是否正确重新排序。尽管如此,这可以而且应该通过公共(public)接口(interface)进行测试。例如。将一系列元素添加到树中,以使树不平衡而不重新排序,然后检查树结构以确保它正确重新排序。

关于unit-testing - 如何对数据结构的内部(组织)进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578673/

相关文章:

unit-testing - Tibco 单元测试工具

unit-testing - Android Studio与Gradle测试中的Robolectric不同线程

algorithm - 在包含数百万个节点的链表中查找循环

algorithm - 带路径压缩算法的加权快速联合 : time complexity analysis

c++ - 无法从 vector 访问初始化结构的内容

c# - 使用 Moq 在函数内模拟与数据源的连接?

scala - Play 框架 -Dconfig.resource 不工作

reactjs - 缓慢的 Karma 单元测试

c++ - 使用 typedef 作为变量名不会产生任何错误

java - ConcurrentHashMap 的 concurrencyLevel 参数给我们什么保证?