如何轻松地将修改后的代码与参考实现进行比较?

时间:2013-05-29 15:11:17

标签: java junit compare

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

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

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

感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:3)

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

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

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

(为了完整起见,让我说清楚),你仍然需要添加自己的测试来涵盖你在改变中引入的新行为。

答案 1 :(得分:0)

我会分两个阶段来做这件事:

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

第二次检查一些极端情况(树处理负数,NaN,Infinity,数百个相同的点,点的不均衡分布?)

R树很有趣。享受!