簡単な質問です。spring-data を使用して DAO レイヤーの CRUD メソッドを生成する場合、生成されたメソッドに対して単体テストを作成する必要がありますか? それとも、ライブラリ コードの単体テストと同等でしょうか?
前もって感謝します。
編集:明確にするために、リリース前に実行される一連の統合テストに加えて、単体テストを作成する必要があるかどうかを尋ねています。たとえば、DAO レイヤーの findAll() メソッドの単体テストは次のようになります。
class DepartmentDAOTest extends spock.lang.Specification {
/* ... */
def "returns all departments"() {
setup:
def result = new List<Department>()
when:
result = dao.findAll()
then:
result.size() == EXPECTED_SIZE
}
}
一方、統合テストは、おそらく新しいリリースにタグを付ける前に、テスト チームまたは開発者によって手動で実行されるでしょう。これはJWebUnitまたはGebを使用して自動化でき、すべてのコンポーネント (プラットフォームを含む) をテストして、「統合」したときに期待どおりに動作することを確認します。
JdbcTemplate を使用して手動で DAO 実装を作成する場合、すべてのメソッドを単体テストする必要があることに疑いの余地はありません。サービス レイヤー (DAO レイヤーを呼び出す) の単体テストを行うときは、DAO レイヤーをモック アウトできるので、2 回テストする必要はありません。
PDF を生成するために pdfbox などのサードパーティ ライブラリを呼び出すと、各メソッドが機能することが期待されます (pdfbox プロジェクトの一部としてテストされているため)。drawSquare メソッドが実際に正方形を描画するかどうかはテストしていませんが、統合テスト中に、エクスポート PDF 機能が希望どおりに PDF を正しくエクスポートすることがわかります。
したがって、質問は実際には、「どのテスト フェーズでスプリング データの使用をテストする必要がありますか?」と言い換える必要があります。