I use .NET 2.0, so will try the Rollback2 attribute tomorrow...

If I run NH in not transcational mode, not opening the transaction in the
setup, the I have the error:
System.Runtime.InteropServices
>
> .COMException
> The partner transaction manager has disabled its support for
> remote/network transactions. (Exception from HRESULT: 0x8004D025)


 Will have a look at the MSDN thread and see if I find something useful...

Cheers
Simo



On 6/11/07, Andrew Stopford <[EMAIL PROTECTED]> wrote:
>
> 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"
> > > >
> >


-- 
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to