在git bisect中,只运行失败的测试是否安全?或者我们应该进行所有测试?

时间:2016-01-13 16:07:05

标签: java git git-bisect

当我使用git bisect命令时,我只运行失败的测试 Java程序的每个二分点。但是,我看到许多与git bisect相关的教程提议运行" make;进行测试"。我有什么理由在每一步都进行所有测试吗? 非常感谢。

2 个答案:

答案 0 :(得分:1)

如果:

  • 所有测试都在标记为良好的提交时通过
  • 某些测试在标记为错误的提交时失败

然后是的,只运行失败的测试来加速二分过程是安全的。您可以从测试结果中推断出其他测试应该通过的好的和坏的提交。

在任何情况下修复有问题的bug后,您可能会重新运行完整的测试套件,这将涵盖您的bugfix引入回归的情况。

答案 1 :(得分:1)

我不得不说@bcmcfc提到的条件是必要的,但还不够。作为参考,他的条件是

  • 所有测试都在标记为良好的提交时通过
  • 某些测试在标记为错误的提交时失败

我的问题是不知道good提交和bad之间发生了什么。例如,在干预提交中是否发现并修复了另一个错误?可以想象 错误或其修复影响错误。

另一个问题是可能存在"脏"承诺在历史上。我不知道您的使用模式,但有些人允许在功能分支上出现失败测试的提交。 bisect可以登陆这些提交,如果你只运行你期望失败的测试,你可能无法完全理解该提交中发生的事情,这可能会导致你误入歧途。甚至可能是该bug被引入然后在该功能分支中修复,然后稍后在另一个功能分支上以稍微不同的方式再次引入,这将真正混淆您修复它的努力。

在我看来,这是古老格言的一个例子,"从理论上讲,理论和实践之间没有区别,但在实践中却存在。"我每次都会进行每次测试。如果他们都通过你期望的地方,那么你不应该觉得你已经浪费了你的努力,你应该充满自信地知道你知道正在发生什么