Use AbstractTransactionalSpringContextTests to rollback NUnit test case automatically

I have two test cases: UserTest and CustomerTest, both of them extend the AbstractTransactionalSpringContextTests class and using the same config file, so I wrote a BaseSpringTest class:

public class BaseSpringTest : AbstractTransactionalDbProviderSpringContextTests
{
    static protected string ctxName="application_context.xml";
    static protected string[] configlocation = new string[]{"assembly://test/test.config/" + ctxName};

    protected override string[]ConfigLocations
    {
        get
        {
            return configlocation;
        }
    }
}

public class UserTest : BaseSpringTest
{
    //test case ...
}

public class CustomerTest : BaseSpringTest
{
    //test case ...
}

When I run the tests, the first one runs ok, but the second one throws an exception:

Spring.Objects.Factory.ObjectCreationException : 
        Error creating object with name 'xxxService' defined in 
        'assembly [Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], resource [test.config.Service.xml]' :
        Initialization of object failed : Duplicate type name within an assembly.

I traced into AbstractSpringContextTests class and found that it’s using a hashtable to cache the loaded context, but the hashtable isn’t a static field: Continue reading “Use AbstractTransactionalSpringContextTests to rollback NUnit test case automatically”