現在の問題
関連記事を参照してください:休止状態のドメイン クラスで問題が発生する可能性があるため、それらを (単体) テストする必要がありますか? 私の新しい J2EE プロジェクトでは、書き始めたドメイン オブジェクトをテストしようとしています (必ずしも単体テストではありません)。それらはビジネス ロジックの多くを必要とせず (ビジネス ロジックは DAO オブジェクト上のビジネス サービスの一部です)、テストによって、ドメイン オブジェクトの整合性を本質的に保証しており、DAO をテストすることでそれを実行しようとしています。メソッド。私の場合、JUnitなどを使用してドメインオブジェクトをテストできないことに注意してください。私の場合、ドメインオブジェクトにはメソッドがなく、属性と休止状態のマッピングアノテーションがあるためです。
たとえば、Patientドメイン オブジェクトについて考えてみましょう。 この場合、 PatientDAOは、Patient ドメイン オブジェクトの CRUD 操作を処理します。メソッドは次のとおりです (完全ではなく、後で境界条件をテストするためにさらに追加する予定です)。
注: これらを単体テスト ケースと呼んでいるわけではありません。ミニ統合テストなどである可能性があります。このアプローチがドメイン オブジェクトのテストで機能することは問題ありません。
PatientDAOTest クラスには以下が含まれます。 - testCreatePatient(); -testUpdatePatient(); - testFindPatient(); -testDeletePatient();
PatientDAO クラスには以下が含まれます。 - createPatient(); - updatePatient(); - findPatient(); -deletePatient();
ドメインオブジェクトで updateMethod() をテストする testUpdatePatient() メソッドを考えてみましょう。では、testUpdatePatient() メソッドをどのように実装するのでしょうか? 1. 「findPatient()」ドメイン メソッドを使用して既存の患者を取得する 2. 新しい詳細で患者レコードを更新する 3. 「updatePatient()」ドメイン メソッドを使用してデータベースに保存し直す 4. 取得する'findPatient()' ドメイン メソッドを使用してデータベースから患者レコードを返す 5. 更新されたデータをアサートする
質問
ご覧のとおり、テストでデータベースを使用していますが、問題はありませんが、このアプローチに問題はありますか?
このアプローチに関する私の本当の質問 (問題として読む) は何ですか?
「 updatePatient ()」のテスト中に、「 findPatient ()」メソッドを (実際には 2 回)使用する必要があります。メソッドのテスト中に別のメソッドを使用しなければならないのに、別のメソッド自体にバグがある可能性があるという事実は、私が気に入らないことです。他の CRUD メソッドもテストしようとすると、同じ話が繰り返されます。
別の方法として、select sql クエリを記述して、データベースから患者レコードをフェッチし、(更新が起動された後に) テスト メソッドからアサートすることもできますが、(SQL コーディング作業を削減するために) 休止状態を使用する目的全体が無効になるだけです。したがって、私はこのアプローチが好きではありません。
私の質問は、特定のメソッドをテストするために他のメソッドに依存するのが一般的ですが、これは悪いアプローチではないですか? これが間違っている場合、ドメイン オブジェクトで ORM マッピングを実際にテストする方法を教えてください。
コメントありがとうございます。