2009-08-24 7 views
0

データベースに格納されている主キーを持つクラスがあります。クラスの新しいインスタンスを作成するときは、HSQLDBデータベースからフェッチするか、データベースにないアイテムの場合はプライマリキーを除くすべてを挿入し、これを自動生成してクラスに戻してid属性を設定します。次に、このIDを取得するgetID()メソッドがあります。自動生成キーを使用してデータベース項目のJUnitテストを作成する

生成されたIDがgetID()メソッドによって返されるものであることを確認するJUnitテストを作成しようとしていますが、コンストラクタ内でIDを取得するために 'CALL IDENTITY'これは0を返します。生成されたIDを保証する最良の方法は、getID()メソッドによって返されたIDと同じですか?

答えて

1

私は本当にクラスをテストするために異なるデザインを検討します。ほとんどの場合、データベースへのアクセスは単体テストではありません。 db IDジェネレータが動作してテストを行っている場合は、クラスをテストするために実際には必要ありません。

あなたがクラスからIDを返すことができれば、あなたのクラスは適切なタイミングでクラスにIDを返すことが重要です。

+0

私はもっとクラスのgetID()メソッドをテストしようとしています。このIDはデータベースによって生成されるので、単にインスタンス化するように指定したものだけをチェックすることはできません。 – Haegin

+1

@Haegin - 私はゲッターを明示的にテストしません。私は振る舞いをテストしようとします(これはゲッターで見ることができます)。すべての 'getID()'が 'private'フィールドを返すのであれば、テストは本当に書く価値がありません。あなたのシステムの動作は確実に永続化されたオブジェクトに依存すべきではありません。 –