为了帮助我的团队编写可测试的代码,我列出了一个简单的最佳实践列表,以使我们的 C # 代码库更具可测试性。(有些观点提到了 Rhino Mocks 的局限性,这是一个针对 C # 的模仿框架,但是这些规则可能也适用于更普遍的情况。)有人有他们遵循的最佳实践吗?
为了最大限度地提高代码的可测试性,请遵循以下规则:
首先编写测试,然后编写代码。原因: 这确保您编写可测试的代码,并且每行代码都得到为其编写的测试。
使用依赖注入设计类 原因: 你不能模仿或测试看不到的东西。
使用模型-视图-控制器或模型-视图-呈现器将 UI 代码与其行为分开。理由: 允许测试业务逻辑,同时将无法测试的部分(UI)最小化。
不要编写静态方法或类。原因: 静态方法很难或不可能隔离,Rhino Mocks 无法模仿它们。
关闭接口,而不是关闭类。理由: 使用接口澄清了对象之间的关系。接口应该定义对象从其环境中需要的服务。而且,使用 Rhino Mocks 和其他模仿框架可以很容易地模仿接口。
隔离外部依赖项 原因: 无法测试未解决的外部依赖项。
将要模拟的方法标记为虚拟方法。 原因: Rhino Mocks 无法模拟非虚拟方法。