1

作成するすべてのエンティティについて、データベースから1つのレコードをロードするだけの単体テストを作成して、クエリが機能し、データがエンティティに正しく設定できるかどうかを確認します。これは、基本的なマッピングの単体テストと見なすことができます。これにより、タイプのマッピングファイルが存在し、埋め込みリソースとして設定されていることも確認できます。

テストは次のようになります(テストはジェネリック基本クラスに存在します):

session.CreateCriteria(typeof(TEntity)).SetMaxResults(1).List();

アサーションは実行しません。例外をスローせずにこの行が機能するかどうかを確認したいだけです。

あるケースでは、マッピングファイルを埋め込みリソースとして設定するのを忘れましたが、テストは引き続き機能しました。ただし、データベースにクエリは送信されなかったため、基本的には何も実行されませんでした。

マップされていないタイプでCreateCriteria()またはList()が失敗しないのはなぜですか?そして、どうすればその特定の要件をテストできますか?

編集:次の行が例外をスローすることがわかったが、それでも最初のケースについて疑問に思っている場合

session.CreateCriteria(typeof(TEntity)).SetMaxResults(1).Future<TEntity>().ToArray()
4

1 に答える 1

2

私にはわかりませんが、NHibernateでは彼らも知らないようです。この問題で報告されたバグについては、https://nhibernate.jira.com/browse/NH-2183を参照してください。彼らはまだそれに取り組んでいます。

于 2010-10-27T13:59:44.647 に答える