在 git 平分期间,运行 仅通过失败测试是否安全?或者我们应该 运行 所有测试?
During git bisect, is it safe to run only failing tests? or we should run all tests?
当我使用 git bisect 命令时,我 运行 只有失败的测试
Java 个程序的每个二分点。不过我看到很多gitbisect相关的教程都提出了运行ning"make; make test"。有什么理由我应该 运行 在每一步进行所有测试吗?
非常感谢。
如果:
- 所有测试在标记为良好的提交时通过
- 一些测试在标记为错误的提交处失败
那么是的,只 运行 失败的测试来加速平分过程是安全的。您可以从好和坏提交的测试结果推断其余测试应该通过。
在任何情况下修复相关错误后,您可能 re-run 完整的测试套件,这涵盖了您的错误修复引入回归的情况。
我不得不说@bcmcfc 提到的条件是必要但不充分的。作为参考,他的条件是
- 所有测试在标记为良好的提交时通过
- 一些测试在标记为错误的提交处失败
我的问题是不知道 good
提交和 bad
之间发生了什么。例如,在中间的提交中是否发现并修复了另一个错误?可以想象 那个 错误或其修复影响了 这个 错误。
另一个问题是历史记录中可能存在 "dirty" 次提交。我不知道您的使用模式,但有些人允许在功能分支上出现测试失败的提交。 bisect
可以着陆于那些提交,如果您只 运行 您预计会失败的测试,您可能无法完全理解该提交中发生的事情,这可能会使您在修复错误时误入歧途。甚至可能是这个 bug 被引入,然后在那个特性分支中修复,然后在另一个特性分支上再次引入以稍微不同的方式,这真的会混淆你修复它的努力.
在我看来,这似乎是一句老话的一个例子,"In theory there's no difference between theory and practice, but in practice there is."我每次测试都会运行。如果它们都在您期望的地方通过,那么您不应该觉得自己白费了力气,您应该因知道自己 知道 正在发生的事情而充满自信。
当我使用 git bisect 命令时,我 运行 只有失败的测试 Java 个程序的每个二分点。不过我看到很多gitbisect相关的教程都提出了运行ning"make; make test"。有什么理由我应该 运行 在每一步进行所有测试吗? 非常感谢。
如果:
- 所有测试在标记为良好的提交时通过
- 一些测试在标记为错误的提交处失败
那么是的,只 运行 失败的测试来加速平分过程是安全的。您可以从好和坏提交的测试结果推断其余测试应该通过。
在任何情况下修复相关错误后,您可能 re-run 完整的测试套件,这涵盖了您的错误修复引入回归的情况。
我不得不说@bcmcfc 提到的条件是必要但不充分的。作为参考,他的条件是
- 所有测试在标记为良好的提交时通过
- 一些测试在标记为错误的提交处失败
我的问题是不知道 good
提交和 bad
之间发生了什么。例如,在中间的提交中是否发现并修复了另一个错误?可以想象 那个 错误或其修复影响了 这个 错误。
另一个问题是历史记录中可能存在 "dirty" 次提交。我不知道您的使用模式,但有些人允许在功能分支上出现测试失败的提交。 bisect
可以着陆于那些提交,如果您只 运行 您预计会失败的测试,您可能无法完全理解该提交中发生的事情,这可能会使您在修复错误时误入歧途。甚至可能是这个 bug 被引入,然后在那个特性分支中修复,然后在另一个特性分支上再次引入以稍微不同的方式,这真的会混淆你修复它的努力.
在我看来,这似乎是一句老话的一个例子,"In theory there's no difference between theory and practice, but in practice there is."我每次测试都会运行。如果它们都在您期望的地方通过,那么您不应该觉得自己白费了力气,您应该因知道自己 知道 正在发生的事情而充满自信。