각 테스트를 트랜잭션으로 래핑하는 통합 테스트 클래스를 설정하려고합니다. 이렇게하면 각 테스트 전에 DB를 다시 설정하는 대신 트랜잭션을 롤백 할 수 있습니다.Rhino Commons UnitOfWork를 사용하여 통합 테스트를위한 트랜잭션 스코핑 중첩
또한 통합 테스트 자체에서 트랜잭션을 사용할 수 있기를 원합니다.
프로젝트를 위해 NHibernate와 Rhino Commons UnitOfWork를 사용하고 있습니다. 테스트를 위해 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에, 코뿔소, 풍경, 및 MSTEST를 처음 사용하는 :
나는 이런 식으로 뭔가를 할 수 있습니다. 중첩 된 Rhino Commons가있는 세션의 동작에 대해서는 명확하지 않습니다. UnitOfWork
s. 여기에있는 것은 통합 테스트의 변경 사항을 롤백하지 않습니다.
나는 System.Transactions
에서 TransactionScope
를 사용했지만, 다음과 같은 오류를 얻을 때 UnitOfWork
의 말 :
System.InvalidOperationException : 트랜잭션이 진행되는 동안 분리가 .. 호출 할 수 없습니다
그래서 내 질문은 다음과 같습니다.
Rhino Commons의 UnitOfWork에서이 동작을 얻을 수있는 방법이 있습니까? 그렇지 않다면, 각 테스트 전에 데이터베이스를 재설정해야합니까, 아니면 UnitOfWork와 잘 작동하는 트랜잭션을 중첩 할 수있는 다른 방법이 있습니까?
감사합니다.