I know very little about about NH so any NH heads here please do wade in and give Simone a lift.
Simone, the rollback is likely failing so so the data is being added in your test but then MbUnit can't complete the rollback when it's added off to COM+ to attempt the rollback. There may be some kind of locking going on with both NH and MbUnit trying to talk to the transaction manager. A few things I would try. - If it is possible to use .NET 2.0 with what your doing, take a look at Rollback2 in MbUnit.Framework.2.0.dll which uses the MbUnit.Framework.TransactionScope and may help. - If possible run NH in a non transactional mode to see if MbUnit if there is a conflict and not a setup or config issue. - If the error is still ocurring then its likely a setup or config issue ( http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=230390&SiteID=1) Again any NH heads I'd appreicate you giving Simone a lift. Andy On 6/11/07, Simone Chiaretta <[EMAIL PROTECTED]> wrote: > > Adding a few more info: > > > If I don't call CommitTransaction() at the end then I cannot run other > test in the same test fixture because the transaction is already open. > > If I call RollbackTransaction, the I probably don't need the [RollBack] > attribute any more since I'm handling the transaction myself. > > Is that right? or am I missing something somewhere? > Simo > > On 6/11/07, Simone Chiaretta <[EMAIL PROTECTED] > wrote: > > > > Hi all, > > I'm implementing the DB testing of my application, that uses NHibernate > > as persistence method. > > > > I like the RollBack attribute of MbUnit because I cannot use a real dev > > DB, but I can only work on the "testing" db, and I cannot put real data on > > it. > > > > But it doesn't work with NHibernate. > > > > let me explain with 2 different examples: > > > > 1 - Plain test as I used to do using a "normal" Ado repository > > > > > > [TestFixture] > > [TestsOn(typeof(UsersPersistenceService))] > > public class UserPersistenceFixtures > > { > > UsersPersistenceService _service; > > > > [SetUp] > > public void SetUp() > > { > > _service = new UsersPersistenceService(); > > } > > > > > > [Test] > > [RollBack] > > public void AddUser() > > { > > User target = new User(); > > target.Name = "Name"; > > target.EmailAddress = " [EMAIL PROTECTED]"; > > _service.Add(target); > > > > User newUser = _service.GetById(target.Id); > > > > Assert.AreEqual(target.Id, newUser.Id); > > Assert.AreEqual("Name", newUser.Name); > > } > > > > [TearDown] > > public void TearDown() > > { > > NHibernateSessionManager.Instance.CloseSession(); > > } > > > > > > I get the error: > > System.Runtime.InteropServices.COMException > > The partner transaction manager has disabled its support for > > remote/network transactions. (Exception from HRESULT: 0x8004D025) > > > > and the test is never executed > > > > 2 - Open a transaction context on the current NH session > > > > [TestFixture] > > [TestsOn(typeof(UsersPersistenceService))] > > public class UserPersistenceFixtures > > { > > UsersPersistenceService _service; > > > > [SetUp] > > public void SetUp() > > { > > NHibernateSessionManager.Instance.BeginTransaction(); > > _service = new UsersPersistenceService(); > > } > > > > > > [Test] > > [RollBack] > > public void AddUser() > > { > > User target = new User(); > > target.Name = "Name"; > > target.EmailAddress = " [EMAIL PROTECTED]"; > > _service.Add(target); > > > > User newUser = _service.GetById(target.Id); > > > > Assert.AreEqual(target.Id, newUser.Id); > > Assert.AreEqual("Name", newUser.Name); > > } > > > > [TearDown] > > public void TearDown() > > { > > NHibernateSessionManager.Instance.CommitTransaction(); > > NHibernateSessionManager.Instance.CloseSession(); > > } > > > > The test executes, but the data are store to the db. > > > > Any idea on how to make it work? Shouldn't the MbUnit rollback happen > > before the commit, so rolling back the transaction before the commit > > happens? > > > > Cheers > > Simone > > > > -- > > Simone Chiaretta > > codeclimber.net.nz > > Any sufficiently advanced technology is indistinguishable from magic > > "Life is short, play hard" > > > > > > > -- > Simone Chiaretta > codeclimber.net.nz > Any sufficiently advanced technology is indistinguishable from magic > "Life is short, play hard" > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "MbUnit.User" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/MbUnitUser?hl=en -~----------~----~----~----~------~----~------~--~---
