java - 您如何轻松地将修改后的代码与引用实现进行比较?

标签 java junit compare

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

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

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

感谢任何帮助。谢谢。

最佳答案

您的做法很有意义,而且是一种很好的做法。请注意,每当您“克隆并拥有”一个现有包时,您这样做很可能是有原因的。也许是它的表现。也许这是一种行为改变。但无论出于何种原因,您针对引用和测试对象运行的测试都需要对更改不可知。

通常,这种测试与随机测试配合得很好——例如,某种集合实现。

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

(为了完整起见,让我声明一下这个无需思考的问题)您仍然需要添加自己的测试以涵盖您通过更改引入的新行为。

关于java - 您如何轻松地将修改后的代码与引用实现进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16817637/

相关文章:

java - 如何在 Android 应用程序的外部类中使用 Java 加载此文本文件?

java - 使用 Maven 运行的 Jenkins Junit 案例出现问题

android - 如何在 ArrayList 中获取最大值

java - 从自定义对象中反转部分 CompareTo 方法

java - 如何正确使用类型参数

java - 创建一个字符和对象数组?

eclipse - 最终 JUnit 方法 stub

java - PowerMock - 模拟静态系统类抛出 IllegalStateException

linq - 仅比较 nHibernate Linq 中的 DateTime 值

Java 堆行为