当我使用 git bisect 命令时,我只在 Java 程序的每个对分点运行失败的测试。但是,我看到许多与 git bisect 相关的教程都建议运行“make; make test”。有什么理由我应该在每一步运行所有测试吗?提前非常感谢。
问问题
84 次
2 回答
1
我不得不说@bcmcfc 提到的条件是必要的,但还不够。作为参考,他的条件是
- 所有测试在标记为良好的提交时通过
- 一些测试在标记为错误的提交中失败
我的问题是不知道good
提交和bad
. 例如,是否在中间提交中发现并修复了另一个错误?可以想象,该错误或其修复影响了该错误。
另一个问题是历史中可能存在“脏”提交。我不知道你的使用模式,但有些人允许在功能分支上出现测试失败的提交。bisect
可以登陆这些提交,如果您只运行您预计会失败的测试,您可能无法完全理解该提交中发生了什么,这可能会导致您在修复错误时误入歧途。甚至可能是在该功能分支中引入并修复了该错误,然后以稍微不同的方式在另一个功能分支中再次引入,这确实会混淆您修复它的努力。
在我看来,这似乎是一句老话的一个例子,“理论上没有理论和实践之间的区别,但实际上是有区别的。” 我每次都会运行每个测试。如果它们都通过了你所期望的,那么你不应该觉得你已经浪费了你的努力,你应该充满信心地知道你知道发生了什么。
于 2016-01-13T20:47:21.697 回答
1
如果:
- 所有测试在标记为良好的提交时通过
- 一些测试在标记为错误的提交中失败
那么是的,只运行失败的测试来加速二分过程是安全的。您可以从测试结果中推断出其余测试应该通过的好提交和坏提交。
在任何情况下,您都可能会在修复有问题的错误后重新运行完整的测试套件,这涵盖了您的错误修复引入回归的情况。
于 2016-01-13T16:09:26.017 回答