2009-03-27 6 views
0

MbUnit Framework를 테스트 중이며 각 테스트 후에 내 테스트 데이터베이스를 영구 상태로 유지하려고합니다. 이것을 어떻게 할 수 있습니까?MbUnit 롤백

이것은 내가 시도하고있는 것이지만, 테스트가 완료되면 테이블이 채워진다.


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data; 
using Gallio.Framework; 
using MbUnit.Framework; 

using NHibernate; 
using NHibernate.Cfg; 

namespace BusinessLayer.Tests 
{ 
    [TestFixture] 
    public class PersonNHibernateTests 
    { 
     [Test] 
     [Rollback] 
     public void CanSavePerson() 
     { 
      Configuration config = new Configuration(); 
      config.Configure(); 
      ISessionFactory factory = config.BuildSessionFactory(); 

      using (ISession session = factory.OpenSession()) 
      { 
       using (ITransaction tx = session.BeginTransaction()) 
       { 

        const string CONST_STR_FIRSTNAME = "Stephen"; 
        const string CONST_STR_LASTNAME = "Manga"; 
        DateTime birthdate = new DateTime(1974, 6, 20); 

        Person p = new Person 
        { 
         FirstName = CONST_STR_FIRSTNAME, 
         LastName = CONST_STR_LASTNAME, 
         Birthdate = birthdate 
        }; 

        session.SaveOrUpdate(p); 
        session.Flush(); 

        tx.Commit(); 

       } 

      } 
     } 

    } 
} 

편집 : 분산 트랜잭션 코디네이터가 활성화되어야 이해 오셨습니다 일부 읽은 후

. 여전히 성공 :(

단지 System.Transactions.TransactionScope 그것을 처리하지 왜
+0

MBUnit을 버전 3.0.6으로 업데이트하면 도움이됩니까? [Gallio 및 MbUnit 발표 v3.0.6] [1] > MbUnit v2의 원래 롤백 속성과 같은 COM + 트랜잭션 컨텍스트를 입력하기 위해 [Rollback]을 수정했습니다. 이렇게하면 다른 사람들이 지적한 호환성 문제를 해결할 수 있습니다. [1] : http://blog.bits-in-motion.com/2009/03/announcing-gallio-and-mbunit-v306.html – Bender

답변

0

?

또는
using (new TransactionScope()) 
{ 
    // do stuff that gets automatically rolled back 
} 

을이 서비스 및 테스트를 시작하지 후,이 (정확히 MbUnit에 Rollback2 속성 어쨌든 무엇으로 롤백 보인다 EnterpriseServices/COM +을 사용하며 .NET 1.1을 목표로합니다.)

+0

거래 범위를 알고 있지만 알고 싶습니다. MbUnit 프레임 워크로이를 수행하는 방법. 이것이 가능한가? –

+0

예. Rollback 속성은 선호되는 방법이 아닙니다. Rollback2 속성은 .NET 2.0 이상에서 선호되는 솔루션입니다. –

0

Proteus 나는 설치가 쉽고 사용하기 쉽습니다. 설치 프로그램의 TearDowns에 몇 가지 코드를 추가하고 'snapshot '을 입력하십시오.

1

코드에 COMMIT 문이 있습니다. 아마 당신은 그것을 제거해야합니다.