2009-07-30 5 views
0

現在、エンティティごとにjavaサーブレットを作成し、エンティティごとに挿入、更新、削除、検索などを行い、動作することを確認して、エンティティクラスと「ワーカー」クラスをテストしています。ワーカークラスは、単にJDBCを使用してエンティティをデータベースに保持するインタフェースの実装であり、エンティティのDB作業を行います。Javaデータベースエンティティクラスのテスト

私が疑問に思っているのは、Javaでエンティティクラスをテストする最良の方法は何ですか?

私は、作成された新しいエンティティごとにテストしようとしているすべての関数を呼び出す模擬アプリケーションを書くのではなく、自動化されたアプローチを探しています。

+0

単純な単体テストとはどのような違いがありますか? –

答えて

2

エンティティと「ワーカー」クラスを独立して、またはサーブレットとWebコンテナをセットアップして使用することができます。純粋なJDBCとJUnitを用いた

、あなたは通常、次の操作を行います。

  1. オープンTestCaseコンストラクタでJDBC接続。
  2. setUp()で取引を開始してください。
  3. tearDown()でトランザクションをロールバックします。
  4. 特定のtestXxx()メソッドの実際のエンティティインスタンスを使用します。

この方法では、開発者ごとに1つのデータベースインスタンスが存在する可能性があります。より高度なものについては、DbUnitを検討してください。

0

リテラルを使用してエンティティの異なる部分(つまり異なるフィールド)を見つけ、メソッド呼び出しでこれらの異なるエンティティを使用して保存、更新、削除などを行うことができます。次に、新しいエンティティを追加したときに、xmlなどの設定を使用して設定が行われた場合、テストはそれらを選択します。

私はHibernateユーザーの観点から話していますので、これはあなたの状況に完全には当てはまらないかもしれませんが、過去にはうまくいきました。

+0

「反射を使用する」部分を明確にすることはできますか?エンティティにどのような値を設定するかは、どのように判断するのに役立ちますか?特に、その一部(大多数)がアプリケーションやデータベースレベルで表現された制約を持つ場合があるためです。 – ChssPly76

+0

したがって、Hibernateでは、その情報を追跡するのに役立つクラスに関する注釈があります。たとえば、@ column(length = 50)のように、VARCHARの最大長が50であることを通知するための注釈があります。データベースで奇妙な検証をしないでください(つまり、奇妙な非標準の制約)。各フィールドのタイプを見つけて、それを使用して値を生成することができます。フィールド自体がエンティティの場合は、データベースから既存のフィールドを追加するか、新しいフィールドを作成します(多対1対多対多の関係)。 – aperkins

+0

十分に適切です。あなたがDAOとして多くの(またはそれ以上の)Hibernate Validatorをテストしているように思えます:-) – ChssPly76

関連する問題