在处理遗留代码时如何解决此问题
你从哪里开始?你如何解决这个问题?
答案 0 :(得分:3)
鸡和蛋的问题。
如果由于耦合很少而无法编写一些不错的单元测试,那么更好的方法可能是从上到下工作。
如果您还没有进行集成,系统和/或GUI测试,那么在开始创建单元测试之前创建它们是一个很好的理由。一旦你有了它们,你就可以开始重构代码来创建合适的单元测试,并且仍然相当确信你的所有罗盘测试都能捕捉到你最明显的错误。
请注意,在我个人看来,这些测试用例应该被创建为一旦您准备开始创建单元测试并重构代码就不必更改它们。
Michael Feathers必须阅读Working Effectively with Legacy Code这个主题。
<强>结论强>
我概述的策略适用于各种各样的变化, 但是有一些警告。有时唯一体面的变化 您可以找到一组类的点是系统边界。 在某些应用程序中,系统边界可能非常广泛:它 包含GUI,调用其他外部库,数据库, 在这些情况下,获得不变量的最佳方法是开始 写下史蒂夫麦康奈尔所谓的“烟雾测试”对抗其他人 系统
答案 1 :(得分:0)
首先要确保不要更改代码的行为。 如果编写断言代码当前行为方式的单元测试,那么您可以对代码进行更改并检查测试是否仍然通过,如果这样做,则代码行为没有改变。 然后,您可以根据需要重构代码。当您重构设计时,您也会重构测试,但不要更改它们所做的断言。