2009-03-27 9 views
0

私はMbUnitフレームワークをテストしており、テストごとにテストデータベースを永続的な状態に保ちたいと考えています。どうすればこれを達成できますか?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(); 

       } 

      } 
     } 

    } 
} 

編集:私は分散トランザクションコーディネータを有効にする必要があり理解に来ているいくつか読んだ後

。まだ成功して、このサービスとテストを開始していない後:(

+0

MBUnitをバージョン3.0.6に更新するのは役に立ちますか? [GallioとMbUnitのアナウンスv3.0.6] [1] > MbUnit v2の元のロールバック属性のようなCOM +トランザクションコンテキストを入力するように[ロールバック]を変更しました。これにより、他の人が指摘した互換性の問題が修正されます [1]:http://blog.bits-in-motion.com/2009/03/announcing-gallio-and-mbunit-v306.html – Bender

答えて

0

理由だけSystem.Transactions.TransactionScopeはそれを扱うことはできませ?

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

また、これはMbUnitのRollback2属性がとにかくない正確に何であると思われる(ロールバックEnterpriseServices/COM +使用し、.NET 1.1)を目指している。

+0

私はトランザクションの範囲を認識していますが、知りたいMbUnitフレームワークでこれを行う方法。これは可能ですか? –

+0

はい。ロールバック属性は推奨されている方法ではありません - 私が考えているRollback2属性は.NET 2.0以上の推奨ソリューションです。 –

0

私はそれはあなたが必要とするすべてのティアダウンをセットアップし、「スナップショットフォルダを準備するためにいくつかのコードを追加するだけで罰金。セットアップと使用.. するのは簡単ですんProteusを使用あなたのデータベースの。

1

コードにCOMMIT文があります。おそらくそれを削除する必要があります。