作为一个团队,我们正试图对现有项目的代码进行现代化(中等规模,比如300K LoC),同时试图不进入完全重写的trap
现有代码紧密耦合,缺乏单元测试,但新部分编写得很好。
我正在寻找一些关于如何继续的文献(书籍,博客等)。我看到这本书"有效地使用遗留代码"是highly recommended然而那本书现在已经十一岁了。从那以后很多事情改变了。我担心它可能会遗漏一些关键技术。特别是因为在单元测试和打破紧耦合方面发生了很多事情(例如我确实认为依赖注入只是过去八年左右的事情)
是否有任何我能阅读的最新书籍,涵盖了破坏依赖关系并为现有代码库编写单元测试?
编辑:快速说明,该项目是99%C#,其中有一些C ++ / CLI混合用于处理视频编码的部分。
答案 0 :(得分:2)
这本书可能有几年了,但只要您使用面向对象/过程语言,本书中的技术就是永恒的。这就是通过引入接缝来分离难以测试的组件。
您似乎正在开发.NET代码库。在这种情况下,我还可以推荐一本最近出版的书:The Art of Unit Testing with examples in C#(第2版),由Roy Osherove撰写,也涉及使用遗留代码。记住,他从Feather的书中获得了很多灵感。本书还介绍了一些高级模拟框架功能(假冒私有方法等),但对于这些技术,YMMV因为它将您的测试与当前实现紧密联系在一起。
如果你想深入研究一些最新的东西,我建议你阅读一些遗留的代码大师博客,如Adrian Bolboaca's和J.B. Rainsberger's。书中没有表示golden master测试等技术,但在重新编写遗留代码库时,这些技术都是有价值的技术。
最后,如果你能让你的团队聚集在一起legacy code retreat,这也可能是对这些技术的一个很好的介绍。
答案 1 :(得分:0)
如果他们不在那里,我会在处理单元测试之前用Selenium之类的东西实现功能测试。
我担心每个模块的单元测试会被更改。你没有指定,但我猜测遗留软件是一个单片应用程序,不是,做系统测试也是一个很好的策略。