Rails 開発チームは、継続的インテグレーションに従うよう努めています。テストに合格した機能のみをコミットするというポリシーを採用することにしました。それは良い方法ですか?テストに合格するまで、他の機能との統合を遅らせる必要がありますか (機能の一部が正常に機能する場合でも)? 前もって感謝します
3 に答える
テストに合格する必要があります。CI サーバーを実行している場合は、合格するまで人々に電子メールを送信するだけです。CI サーバーがなければ、他のすべての人は、それらのテストが失敗することが「想定」されているかどうかを判断する必要があります。ブー。
もう 1 つのオプションは、実際に作成された機能のテストのみをチェックインすることです。テストを実行可能な仕様として使用している場合、アプリ全体が完了するまですべてが合格するわけではなく、誰も何もチェックできません。
テストを「保留中」としてマークしたり、スキップする必要があることを示したりすることもできますが、保留/スキップを解除することを忘れないでください。
テストは合格する必要があります。これが、最初にテストを作成する理由です。何らかの理由で1つ以上のテストに合格しなかった場合は、(明らかに)問題が発生したことを示しており、あなたとあなたのチームは解決策に取り組む必要があります。
コードがテストの失敗でコミットされた場合、それを行ったプログラマーを非難するスパムメール。これにより、次回コードをコミットする前に、より注意を払うことになります。
テストの失敗でコードをコミットすることを回避する1つの方法を聞いたことがありますが、個人的にテストしたことはありません。2つのリポジトリ(ブランチの場合もあります)が必要です。背後にある理論は次のとおりです。
開発者のコミットはブランチを対象とします。このブランチの目的は、すべてのテストに合格することを保証することだけです。このブランチからテストをビルドして実行するようにCIサーバーを構成する必要があります。
ブランチですべてのテストに合格したら、トランクに対してマージを実行する必要があります。これは、全員がこのブランチで作業する必要があるため、マージは透過的で自動である必要があるためです。
私はこのアプローチをテストしていませんが、私の意見では、解決するよりも多くの問題が含まれていることを繰り返します
もう1つの方法は、VCSのコミットイベントにフックを追加して、すべてのテストを強制的に実行することですが、これは1つのコミットを実行するだけでも時間がかかる可能性があります。
追加情報として、この応答を確認できます
他の機能を統合する前に、個人的にテストに合格するのを待ちます。