いくつかの理由から、一般的なカバレッジ ツールが聖杯であるかどうかはわかりません。
- カバレッジは目標ではなく、手段です。これは、コードのどの部分がテストで完全にヒットしていないかを示します。テストがどれほど優れているかについては何も言いません。
- 生成されたテストは、コードのセマンティクスを推測できません。テストを生成するフレームワークは、コードの読み取りから意味を推測できますが、これは本質的に間違っている可能性があります。ユニットテストの全体的なポイントは、コードが実際に意図したとおりに動作するかどうかを確認することでもあるからです。
- 自動化されたフレームワークは人為的なカバレッジを生成するため、コードの一部が適切な単体テストでテストされているか、フレームワークによって表面的にテストされているかはわかりません。テストされていないコードがカバーされていないものとして表示されるようにしたいので、それを修正します。
あなたにできること (そして私は ;-) ) は、Java Bean をテストするための一般的なテストを作成することです。リフレクションにより、Java Bean の Sun 仕様に対して Java Bean をテストできます。equals と hashcode の両方が実装されている (またはどちらも実装されていない) ことを確認し、getter が実際に setter でプッシュした値を返すことを確認し、すべてのプロパティに getter と setter があるかどうかを確認します。
たとえば、「比較可能」を実装するものに対して同じ基本的なトリックを実行できます。
実行も維持も簡単で、きれいな豆を手に入れることができます。残りの単体テストに関しては、重要な部分を最初に徹底的にテストすることに集中するようにしています。
カバレッジは、誤った安心感を与える可能性があります。常識は自動化できません。