我对单元测试、DI、mock和所有设计原则都有很好的掌握,以尽可能地实现代码全覆盖(例如单一责任原则,编程时考虑“如何测试这个”等)。
在我的最近一个应用程序中,我没有真正使用TDD进行编码。我想到了单元测试并在编码后编写了我的测试、重构等等。当时我只在易于使用TDD的情况下采用了TDD,而且我对此并不像现在这样精通。那是我完全利用DI、mocking框架等的第一个项目,也是第一个具有完整代码覆盖率的项目,我在其中学到了很多。我渴望分配到我的下一个项目,这样我就可以完全从头开始使用TDD进行编码。
我知道这是一个广泛的问题,我已经订购了《通过示例学习TDD》和《XP大解密》,但我希望能简要了解如何在TDD下设计/编写大型应用程序。
您是否编写整个应用程序,仅使用存根代码?(例如,编写所有函数签名、接口、结构,并编写整个应用程序,但不编写任何实际实现)?我可以想象它在小到中等规模的应用程序上运作,但在大型应用程序上是否可行?
如果不是这样,那么您将如何为系统中最高级别的函数编写第一个单元测试?例如,在公开了名为DoSomethingComplicated(param1、...、param6)的函数的Web服务上。显然,对于像AddNumbers()这样简单的函数首先编写测试很容易,但当函数位于调用堆栈的顶部时该怎么办?
你还在做前期设计吗?
显然,你仍然想要进行“架构”设计——例如,绘制流程图,显示IE与IIS之间通过WCF连接到Windows服务,以及与SQL数据库交互的ERD(实体关系图),等等。但是类设计呢?类之间的交互等等,你会提前进行设计,还是只是不断编写存根代码,随着工作的进行重构交互,直到整个系统连接起来并且看起来可以工作为止?
非常感谢您的任何建议。