首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MbUnit回滚

MbUnit回滚
EN

Stack Overflow用户
提问于 2009-03-27 16:02:04
回答 3查看 966关注 0票数 0

我正在测试MbUnit框架,并希望在每次测试之后将我的测试数据库保持在持久状态。我怎样才能做到这一点?

这就是我正在尝试的,但是在测试完成后,我的表就被填满了。

代码语言:javascript
运行
复制
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();

                }

            }
        }

    }
}

编辑:

在阅读了一些之后,我了解到必须启用分布式事务协调器。在启动此服务并进行测试之后,仍然没有成功:

EN

回答 3

Stack Overflow用户

发布于 2009-04-16 17:37:58

代码中有一个COMMIT语句。也许你应该把它去掉。

票数 1
EN

Stack Overflow用户

发布于 2009-03-27 16:03:38

为什么不让System.Transactions.TransactionScope来处理呢?

代码语言:javascript
运行
复制
using (new TransactionScope())
{
    // do stuff that gets automatically rolled back
}

或者,这似乎正是MbUnit Rollback2属性所做的(Rollback使用EnterpriseServices/COM+并针对.NET 1.1)。

票数 0
EN

Stack Overflow用户

发布于 2009-03-27 16:12:15

我使用普罗图,它做得很好。易于安装和使用。您所需要的只是向设置TearDowns添加一些代码,并使用数据库的“快照”准备文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/690357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档