我正在测试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();
}
}
}
}
}编辑:
在阅读了一些之后,我了解到必须启用分布式事务协调器。在启动此服务并进行测试之后,仍然没有成功:
发布于 2009-04-16 17:37:58
代码中有一个COMMIT语句。也许你应该把它去掉。
发布于 2009-03-27 16:03:38
为什么不让System.Transactions.TransactionScope来处理呢?
using (new TransactionScope())
{
// do stuff that gets automatically rolled back
}或者,这似乎正是MbUnit Rollback2属性所做的(Rollback使用EnterpriseServices/COM+并针对.NET 1.1)。
发布于 2009-03-27 16:12:15
我使用普罗图,它做得很好。易于安装和使用。您所需要的只是向设置TearDowns添加一些代码,并使用数据库的“快照”准备文件夹。
https://stackoverflow.com/questions/690357
复制相似问题