私はCoberturaによって監視されているJUnitテストを実行するantビルドがあるJavaプロジェクトに取り組んでいます。それは素晴らしい作品であり、私たちはカバレッジを非常に高く保ちました。 Hibernateエンティティのようないくつかのクラスでは、最小限のコードを持っていますが、equalsメソッドとhashCodeメソッドがあります。それらをテストすることは大きな痛みであり、カバレッジのパーセンテージを引き下げます。私たちはEqualsVerifierを使ってみましたが、2つのクラスは互いに参照を持ちます。これはHibernateエンティティで頻繁に発生します。Javaコードカバレッジのアイデア?
Commons EqualsBuilderの使用を検討しましたが、IDEでequals/hashCodeメソッドを自動生成する機能がなくなりました。私はEqualsBuilderもリフレクションを通して行うことができますが、ビルドタイム単体テストのカバレッジのためだけにランタイムパフォーマンスを失いたくはありません。
CoberturaにequalsメソッドとhashCodeメソッドを無視するように指示するのが理想的な状況ですが、そこからのパッチではクラスに注釈を付ける必要があります。
私は他の人のアイデアが、そのような場合にうまくいくかどうかについて考えています。誰にもこれをどうやって行うのかについてのアイデアはありますか?
ありがとうございます!
私はすべてのコードをテストすることに同意します。精神的な闘争は、これらのテストの手動コーディングによるものです。この場合、equalsメソッドは自動生成され、正しいです。したがって、テストは使用されたアルゴリズムのテストです。非常に多数のブランチが含まれているので、テストはオブジェクトをいくつかのものに設定する一連の組み合わせ、または各ブランチの各側をカバーするヌルです。 おそらく最後に、私に最も適したものは、お互いを参照するクラスを許可するためにEqualsVerifierにパッチを提出することでしょう。 –
彼らは作成された時点で「正しい」が、他のメンバー変数をオブジェクトに追加した直後ですか?それは私が心配することになるだろう。 –