各テストをトランザクションでラップする統合テストクラスを設定しようとしています。このようにして、各テストの前にDBをリセットする代わりに、各テストの後にトランザクションをロールバックできます。
また、統合テスト自体でトランザクションを使用できるようにしたいと思います。
プロジェクトにはNHibernateとRhinoCommonsUnitOfWorkを使用しています。テストにはMSTestを使用しています。
私はこのようなものが欲しい:
[TestInitialize]
public void TestInit() {
// create outer transaction scope
UnitOfWork.Start();
UnitOfWork.Current.BeginTransaction();
}
[TestCleanup]
public void TestCleanup() {
// rollback outer transaction
UnitOfWork.Current.Dispose();
}
[TestMethod]
public void IntegrationTest() {
using (UnitOfWork.Start(UnitOfWorkNestingOptions.CreateNewOrNestUnitOfWork)) {
UnitOfWork.Current.BeginTransaction();
// integration test code
UnitOfWork.Current.TransactionalFlush();
// possibly more transactions
}
}
NHibernate、Rhino Commons、MSTestを使用したのはこれが初めてです。ネストされたRhinoCommonsを使用したセッションの動作がわかりませんUnitOfWork
。私がここに持っているのは、統合テストからの変更をロールバックしません。
TransactionScope
fromを使用してみましたが、 sが終了System.Transactions
すると次のエラーが発生します。UnitOfWork
System.InvalidOperationException:トランザクションの進行中は切断を呼び出すことができません。
だからここに私の質問があります:
Rhino CommonsのUnitOfWorkでこの動作を取得する方法はありますか?そうでない場合は、各テストの前にデータベースをリセットする必要がありますか、それともUnitOfWorkでうまく機能するトランザクションをネストする別の方法がありますか?
ありがとうございました。