你在 TDD 中的提交顺序?

Sequence of your commits in TDD?

所以我的问题是,当我们遵循 TDD

时,提交顺序会是什么样子

所以在情况 1 中,我们将保证我们的构建不会失败,并且它会逐步向您的项目添加功能。但在案例 2 中,一些提交会导致构建失败。虽然第二个完美地展示了 TDD,但我觉得案例 1 也是完美的 TDD。 想知道意见和行业标准?

案例 1

1.code 并测试场景 1

2.code 并测试场景 2

案例 2:

1.test 方案 1

2.code 方案 1

3.test 方案 2

4.code 方案 2

so my question would be that how will sequence of commits look like when we follow TDD

TDD,在大多数情况下,并没有真正说明这一点。

通常的做法是,当测试为红色时,您永远不会共享更改;这里的原因是,通常情况下,即使是一次测试失败也会导致构建失败,这意味着您对失败测试的善意提交会阻止您后面的其他修复和功能部署到生产环境中。

现在,如果失败测试的提交没有使构建失败(希望是因为测试被故意排除在执行之外,而不是因为我们的构建管道宽松),那么提交失败的测试可能是有意义的.

当我在 git 中构建一个分支以展示我如何进行 TDD 时,我会提交损坏的测试以清楚地演示每个 RED/GREEN/REFACTOR 任务。但这些演示在两个重要方面与上述案例不同

  • 它们没有被共享;其他人在合并我的更改时不会被阻止
  • 没有 "all of the tests pass" 的管道实施,因为根本没有部署。

测试 Commit/Revert (TCR) 是一种不同的编码习惯,与 TDD 有点相关。关键思想是,当您 运行 在本地进行测试时,您会得到两个结果之一

  • 所有测试都通过,因此您的最新更改会自动提交(通常带有通用提交消息)
  • 任何测试失败,因此您的最新更改将被自动丢弃

...这意味着您不能在没有代码的情况下提交测试以使其通过。

没有代码的测试真的很糟糕的用例之一? git-bisect;如果我试图在两次提交之间找出一个奇怪的问题,那么你在我的好提交和坏提交之间的 "the tests don't pass" 提交可能最终会在我们已经不开心的情况下为我做很多额外的工作路径。