我目前正在修改其他人的R-Tree实现,以增加其他行为.我想确保一旦进行更改,树的基本结构便保持不变.
我当前的方法是创建参考代码的副本,并将其移至其自己的程序包(tree_ref)中.然后,我创建了一个单元测试,其中包含修改后的树和原始树的实例(在tree_ref中).我用数据填充树,然后检查它们的字段值是否相同-在这种情况下,我断言测试用例已通过.
令我惊讶的是,这可能不是最好的方法,并且可能存在一些我不知道的解决此问题的公认方法.我一直无法通过搜索找到一个.
任何帮助表示赞赏.谢谢.
解决方法:
您正在做的事情是有道理的,是一种好习惯.请注意,每当您“克隆并拥有”一个现有软件包时,您可能都会出于某种原因.也许是它的表现.也许是行为上的改变.但是无论出于何种原因,针对参考对象和测试对象运行的测试都必须与更改无关.
通常,这种测试与随机测试(例如某种实现集合的测试)配合得很好.
还要注意,如果参考实现具有可靠的单元测试,则无需涵盖这些情况,您只需要针对实现中的测试即可.
(为了完整起见,让我说这很简单),您仍然必须添加自己的测试以涵盖所做更改所引入的新行为.