如何验证重构是否等于原始代码

2022-09-03 16:27:03

我正在使用传统的java代码,没有任何单元测试。许多类需要重构才能使用项目。

许多重构都可以用eclipse完成,我是手工做的。经过一些重构后,我回顾了cvs-HEAD的差异,但我不能真正确定一切都是100%正确的。

问题:如何验证与以前版本在数学上相同的重构?我希望有一个工具,但我也接受“基本的人类算法”作为解决方案。

我知道,“运行你的JUnit-Tests”是最好的答案,但可悲的是,我的项目中没有任何答案。

谢谢!


答案 1

在“TDD按示例”中,有一个特定的部分讨论了它。问题是你需要单元测试来重构,但复杂的代码通常是不可测试的。因此,您希望重构以使其可测试。周期。

因此,最佳策略如下:

执行微小的重构步骤。当步骤很小时,人类更容易确保整体行为完好无损。仅选择可提高可测试性的重构。这是您的直接目标。不要考虑支持未来的功能(或类似的东西)。只要想想“我如何使单元测试能够测试此方法/类”。

一旦方法/类变得可测试,就为它编写单元测试。

重复此过程将逐渐使您达到进行测试的位置,因此您可以更积极地重构。通常,此过程比预期的要短。


答案 2

如果你认为你可以通过盯着程序来察觉,那么你正在滑坡。正如其他响应者之一已经说过的那样,两个程序是否相等的问题是不可决定的(由图灵机决定)。

如果您没有单元测试,我建议您至少设置一个回归测试工具。拍摄程序的一些输入和一些输出版本1的快照,运行到版本2并确保结果相同。

如果它是一个GUI,我希望它具有MVC分离,以便您可以单独测试模型,否则您可能会陷入困境。


推荐