为单元测试编写模拟应该在单独的提交中吗?
Should writing mocks for unit tests be in a separate commit?
提交没有人使用的代码是个坏主意,因为审阅者很难理解为什么要这样写,也很难知道代码是否正确。
因为我在用 TDD 编写代码,所以在编写代码逻辑之前我会编写单元测试。
测试有时依赖于新的模拟,它们的第一个(也是唯一)用途是测试。应用上述原则,我不想自己提交模拟。因此,我最终在同一提交中提交了单元测试和模拟。
这使得提交变得相当长,并且模拟感觉不像是其中的一部分。将它们放在不同的提交中会更好(甚至可能让不同的开发人员审查它,更好地理解模拟代码)。
我知道这个设计问题可能是个人喜好问题,但我是 TDD 的新手,感觉可能有一种解决方案比另一种更正确。
任何输入将不胜感激。
关于 Git 提交的最重要的政策是 每个提交都应该通过构建 。有人可能会争辩说,对于 TDD,提交 red/green/refactor 周期的每一步是有意义的,如下所示:
- 红色,提交(但不要这样做)
- 绿色,提交
- 重构,提交
但是,如果您在红色上提交,您的提交将导致构建失败,这将很好地利用例如git bisect
不可能。我认为可以从 green 和 refactor 阶段中单独提交,如果你愿意的话,但如果你能保持每个整体变化很小,这不是最重要的。
如果您可以在添加测试之前添加模拟,并且构建仍然通过,我认为这是可以接受的做法。这不是我自己会做的事情,但我不认为这会是个问题。
通常,审阅者会查看多个提交的组合差异,因此这不太可能造成混淆。
不过,对于 TDD,最常见的过程是 首先 编写测试,然后编写足够的代码使测试通过。如果其中包括模拟,则将它们添加为对测试的反应。
如果您发现它会产生一些粗粒度的提交,那么这就是 TDD 过程给您的反馈。反馈并不是说您对该过程的应用一定是错误的,而是您可能会从重新考虑您的 API 设计中受益。
提交没有人使用的代码是个坏主意,因为审阅者很难理解为什么要这样写,也很难知道代码是否正确。
因为我在用 TDD 编写代码,所以在编写代码逻辑之前我会编写单元测试。
测试有时依赖于新的模拟,它们的第一个(也是唯一)用途是测试。应用上述原则,我不想自己提交模拟。因此,我最终在同一提交中提交了单元测试和模拟。
这使得提交变得相当长,并且模拟感觉不像是其中的一部分。将它们放在不同的提交中会更好(甚至可能让不同的开发人员审查它,更好地理解模拟代码)。
我知道这个设计问题可能是个人喜好问题,但我是 TDD 的新手,感觉可能有一种解决方案比另一种更正确。
任何输入将不胜感激。
关于 Git 提交的最重要的政策是 每个提交都应该通过构建 。有人可能会争辩说,对于 TDD,提交 red/green/refactor 周期的每一步是有意义的,如下所示:
- 红色,提交(但不要这样做)
- 绿色,提交
- 重构,提交
但是,如果您在红色上提交,您的提交将导致构建失败,这将很好地利用例如git bisect
不可能。我认为可以从 green 和 refactor 阶段中单独提交,如果你愿意的话,但如果你能保持每个整体变化很小,这不是最重要的。
如果您可以在添加测试之前添加模拟,并且构建仍然通过,我认为这是可以接受的做法。这不是我自己会做的事情,但我不认为这会是个问题。
通常,审阅者会查看多个提交的组合差异,因此这不太可能造成混淆。
不过,对于 TDD,最常见的过程是 首先 编写测试,然后编写足够的代码使测试通过。如果其中包括模拟,则将它们添加为对测试的反应。
如果您发现它会产生一些粗粒度的提交,那么这就是 TDD 过程给您的反馈。反馈并不是说您对该过程的应用一定是错误的,而是您可能会从重新考虑您的 API 设计中受益。