0

私はSpring.netとNHiberante(HibernateTemplate)を使用してDAOを実装しています。

'AbstractTransactionalDbProviderSpringContextTests'から拡張された統合テストもいくつかあります。

DIは正常に機能しており、すべてのテストに合格しますが、合格しない場合でも合格する場合があります。

たとえば、hbm.xmlファイルに次のようなエラーがある場合:

<class name="Confluence.Domain.User" table="THIS TABLE DOES NOT EXIST">

テストは失敗しますが、エラーが次のような場合:

<many-to-many class="Confluence.Domain.User" column="THIS COLUMN DOES NOT EXIST"/>

テストは静かに合格し、バグを隠します。

SetComplete()を使用してテストし、DBに変更がないかチェックしていますが、この種のテストの全体的な考え方はそうすることではないと思います。

誰かがこの問題を修正する方法を教えてもらえますか?

どうもありがとうございます!

@Ben:SQLスクリプトを実際に実行して、それらが機能するかどうかを確認する必要がある場合、この種のSpringテストを使用する利点は何ですか?

4

2 に答える 2

2

NHベースのDAOをテストするときは、セッションをフラッシュして、データベースが新しい情報で更新されるようにする必要がありますが、それでも以前と同じようにロールバックします。これを行う方法はここで説明されています-http://forum.springframework.net/showthread.php ?t=5246 これをリファレンスドキュメントに追加しました。お役に立てれば。

乾杯、マーク

于 2008-12-30T19:50:18.663 に答える
1

マッピングに構文エラーがある場合、NHibernate は config.BuildSessionFactory() で失敗します。

しかし、つづりが間違っている/存在しないデータベース オブジェクトの場合、NHibernate が知る唯一の方法は、実際にクエリを実行することです...そのため、いくつかの統合テストを使用して、単一のエンティティで挿入/選択をテストし、それが機能することを確認することができます。

ただし、これが Spring.NET とどう関係するのかはわかりません。

于 2008-09-24T13:09:18.270 に答える