我是否应该让测试仍然通过(失败)?

时间:2012-04-24 00:02:27

标签: ruby-on-rails-3 continuous-integration

我们的rails开发团队尝试遵循持续集成。我们决定采用仅提交测试通过的功能的策略。这是一个继续下去的好方法吗?我应该延迟与其他功能的集成,直到我的测试通过(即使功能的部分功能正常)?提前致谢

3 个答案:

答案 0 :(得分:4)

测试应该通过 - 如果您正在运行CI服务器,它只会通过电子邮件向人们发送垃圾邮件,直到他们这样做。没有CI服务器,每个 else 都必须弄清楚这些测试是否“应该”失败。嘘声。

另一个选择是仅检查实际编写的功能的测试;如果您使用测试作为可执行规范,那么在整个应用程序完成之前它们都不会通过,并且没有人能够检查任何内容。

你也可以将测试标记为“待定”或表示应该跳过它们,但记住 un -pend / -skip它们通常是有问题的。

答案 1 :(得分:1)

测试应该通过这就是你首先编写它们的原因,如果由于某种原因一个或多个测试没有通过,它表明出现了问题(显然),你和你的团队应该在解决方案。

如果代码是在测试失败的情况下提交的,那么垃圾邮件会指责执行此操作的程序员,这样他下次在提交代码之前会更加关注

我听说过一种方法可以避免代码出现测试失败,但我没有亲自测试过,它涉及到两个存储库(它可能是一个分支),背后的理论是:

  1. 开发人员提交将以分支为目标,此分支的目的只是为了保证所有测试都通过,您应该配置CI服务器以从此分支构建和运行测试

  2. 当所有测试都在分支中传递时,应该对主干进行合并,因为每个人都应该在这个分支上工作,合并应该是透明和自动的

  3. 我再说一遍,我没有测试过这种方法,在我看来,它涉及的问题多于解决的问题

    另一个替代方法是在VCS中为commit事件添加一个钩子并强制运行所有测试,但这只是执行一次提交所花费的时间

    作为附加信息,您可以查看此回复

    https://stackoverflow.com/a/7110774/1268570

答案 2 :(得分:0)

在集成其他功能之前,我会亲自等待测试通行证。