3

我目前正在修改其他人的 R-Tree 实现以添加其他行为。我想确保一旦我进行了更改,树的基本结构保持不变。

我目前的方法是创建参考代码的副本并将其移动到它自己的包(tree_ref)中。然后我创建了一个单元测试,其中包含我修改的树和原始树的实例(在 tree_ref 中)。我正在用数据填充树,然后检查它们的字段值是否相同——在这种情况下,我断言测试用例已经通过。

令我震惊的是,这可能不是最好的方法,并且可能有一些我不知道的公认方法来解决这个问题。我一直无法通过搜索找到一个。

任何帮助表示赞赏。谢谢。

4

2 回答 2

3

你在做什么是有道理的,是一个很好的做法。请注意,每当您“克隆并拥有”现有软件包时,您可能会出于某种原因这样做。也许是它的表现。也许这是一种行为改变。但无论出于何种原因,您针对参考和测试对象运行的测试都需要与更改无关。

通常,这种测试适用于随机测试——例如某种集合实现。

另请注意,如果参考实现具有可靠的单元测试,则无需涵盖这些情况——您只需将测试定位于您的实现即可。

(为了完整起见,让我先声明一下)您仍然需要添加自己的测试来覆盖您通过更改引入的新行为。

于 2013-05-29T15:24:58.680 回答
0

我会分两个阶段做到这一点:

首先,将随机数据插入树中。(我假设这就是你正在做的)

其次检查一些极端情况(树是否处理负数、NaN、无穷大、数百个相同点、点分布不平衡?)

R树很有趣。享受!

于 2013-05-29T15:19:24.580 回答