为了帮助我的团队编写可测试的代码,我提出了这个简单的最佳实践列表,以使我们的C#代码库更易于测试.(有些观点指的是Rhino Mocks的限制,这是C#的模拟框架,但规则也可能更普遍适用.)有没有人有他们遵循的最佳实践?
要最大限度地提高代码的可测试性,请遵循以下规则:
首先编写测试,然后编写代码.原因:这可确保您编写可测试代码,并确保每行代码都为其编写测试.
使用依赖注入设计类.原因:你无法模拟或测试无法看到的东西.
使用Model-View-Controller或Model-View-Presenter将UI代码与其行为分开.原因:允许在无法测试的部分(UI)最小化的同时测试业务逻辑.
不要编写静态方法或类. 原因:静态方法难以或无法隔离,Rhino Mocks无法模拟它们.
编程关闭接口,而不是类.原因:使用接口阐明了对象之间的关系.接口应该定义对象从其环境中需要的服务.此外,可以使用Rhino Mocks和其他模拟框架轻松模拟接口.
隔离外部依赖项.原因:无法测试未解析的外部依赖项.
将您想要模拟的方法标记为虚拟.原因:Rhino Mocks无法模拟非虚方法.