2010-08-06 109 views
4

我们有一个开始变大的项目,我们需要在开始重构时开始应用单元测试。将单元测试应用于已存在的项目的最佳方式是什么?我(从某种程度上)习惯于从头开始做,在那里我将测试与第一行代码一起编写。当功能已经到位时,我不确定如何启动。我应该开始为存储库中的每种方法编写测试吗?还是应该从控制器开始下来?如何在大型项目中进行单元测试

更新: 澄清该项目的规模。我真的不知道该怎么形容这只是说有8个控制器和大约167文件有一个.cs文件,全部完成了大约7个开发人员月份。

+0

你说的有多大,我认为是相关的? – 2010-08-06 18:48:51

+0

10个开发人员月的开发..在平庸的开发级别(如果有意义的话) – DaveDev 2010-08-06 18:51:00

+0

有多少个类,页面? – 2010-08-06 18:55:51

回答

5

正如您似乎意识到的那样,将测试加装到现有项目中并不容易。你走的时候编写测试的方法是更好的方法。你的问题是过程和技术之一 - 每个人都必须要求测试,否则没有人会使用它们。

我听说并且同意的建议是,你不应该试图一次性在现有的代码库中包装测试。你永远不会完成。通过在您的bug修复过程中进行测试开始 - 每个修复的bug都会得到测试。随着时间的推移,这将开始对现有代码进行测试。当然,新代码必须总是有测试。最终,您会将覆盖范围提高到合理的百分比,但这需要时间。

我推荐给我的一本好书是Michael C. Feathers的Working Effectively With Legacy Code。标题并没有真正展示它,但是对现有代码库进行测试是本书的一个主要主题。

+0

这实际上是本书的基础,因为他对遗产代码的定义是无代码的代码。 – 2010-08-06 18:55:56

+0

+1,我刚读完它,它是一本很棒的书! (哦,+1是为了很好的总结)。 – 2010-08-06 19:20:09

4

有很多方法可以在现有的代码库中进行测试。单元测试并不一定是最有效的开始。如果您编写的代码量很大,那么您可能需要考虑功能和集成测试,然后再进行单元测试。这些更高级别的测试将帮助您确保您的产品在您进行更改以改进结构和改进单元测试时继续工作。

我非常推荐非测试优先组织使用的一种做法是:在原始代码部分的作者以外的其他人员为该部分编写单元测试。这可以让您获得一定程度的交叉培训和完整性检查,并且还有助于确保您不会保留会对代码整体造成损害的假设。

除此之外,我将第二个建议迈克尔羽毛的书。