2010-11-30 20 views
3

誰かが次のロジックで動作するSVNプリコミットフックに出くわしたことはありますか?対応するテストクラスにも変更をチェックするSVNフック

"MyClass.java"が変更されコミットされている場合は、命名規則に従って "MyClassTest.java"を変更する必要があります。

ここでの目標は、開発者がコードを変更したときに、対応する単体テストに変更を加えたことを確認することです。

これは、ちょっとした書式設定を変更することで騙される可能性があることは分かっています。しかし、目標は不正行為をやめることではありません。それは、それに移行しているチームのテスト駆動開発を強く奨励することです。

変更が単なるリファクタリングの場合、送信コメントに「REFACTOR」という単語が含まれているかどうかを確認するために、フックがチェックを無視することができます。 (純粋なリファクタは常に自分自身でコミットする必要があります)

+3

これは少し制限があるようです。コードをリファクタリングしているだけで、新しいテストは必要ない場合はどうなりますか?または、テストを追加するだけの場合はどうなりますか? –

+0

新しいテストを追加することは重要ではありません。リファクタリングに関しては、おそらく、オーバーライドが必要です。例:コミットコメントに「REFACTOR」という単語が含まれている場合は、テストチェックを行わないでください。 – Patrick

+0

@Alexandreに何を追加するか、インターフェイスを変更するとどうなりますか?あなたは Test.javaテストを持っていますか? SVNコミットフックを満足させるだけのインターフェースをテストするのは残念です。私たちはTDDを多く使用しています。すでに多くのテストを行っているコードをリファクタリングすると、コードがすでに100%ユニットテスト済みであるため、リファクタリングすることができます。なぜ私はテストを変更する必要がありますか?テストはすでにコードの100%をカバーしています... –

答えて

1

達成したいのは、単体テストの "実行"です。ポストコミットをチェックすることをお勧めします(テストは通常​​のコミット操作よりも遅くなります)いずれかのクラスでテストカバレッジが減少した場合さらに、そのチェックをContinuous Integrationサーバーに入れてください。

もちろん、これはgetの「愚かな」テストにつながり、より多くのカバレッジを得るために設定することができます。これは、カバレッジ・スレッショルドとスレッシュホールドに達した場合にのみアラートを割り当てることによって「防止」することができます。

このようにして、「間違っていると、あなたを処罰する仕組み」ではなく、「間違えた場合は私たちに警告する仕組み」という考えをチームに売ることができます。

+0

ありがとうSoronthar。これは正しい方法です。 CIモニタリングのカバレッジの進捗状況。 – Patrick

関連する問題