0

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

4

3 回答 3

4

测试应该通过——如果你正在运行一个 CI 服务器,它只会向人们发送垃圾邮件,直到他们通过。如果没有 CI 服务器,其他人将不得不弄清楚这些测试是否“应该”失败。嘘。

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

您可能还可以将测试标记为“待处理”或指示它们应该被跳过,但记住取消- 挂起/跳过它们通常是有问题的。

于 2012-04-24T00:07:09.730 回答
1

测试应该通过这就是您首先编写它们的原因,如果由于某种原因一个或多个测试未通过,则表明出现问题(显然)并且您和您的团队应该致力于解决方案。

如果代码在测试失败的情况下提交,垃圾邮件会指责程序员这样做,这样下次他在提交代码之前会更加注意

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

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

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

我再说一遍,我没有测试过这种方法,我认为它涉及的问题多于解决的问题

另一种选择是在 VCS 中的提交事件中添加一个钩子并强制运行所有测试,但这可能仅执行一次提交就很耗时

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

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

于 2012-04-24T01:24:33.777 回答
0

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

于 2012-04-24T00:05:06.170 回答