diff --git a/src/Spring/Spring.Testing.NUnit/Testing/NUnit/AbstractDependencyInjectionSpringContextTests.cs b/src/Spring/Spring.Testing.NUnit/Testing/NUnit/AbstractDependencyInjectionSpringContextTests.cs index a1787c7b..db1a4726 100644 --- a/src/Spring/Spring.Testing.NUnit/Testing/NUnit/AbstractDependencyInjectionSpringContextTests.cs +++ b/src/Spring/Spring.Testing.NUnit/Testing/NUnit/AbstractDependencyInjectionSpringContextTests.cs @@ -25,6 +25,7 @@ using System.Reflection; using NUnit.Framework; using Spring.Context; +using Spring.Context.Support; using Spring.Objects.Factory; using Spring.Objects.Factory.Config; using Spring.Objects.Factory.Support; @@ -77,6 +78,7 @@ namespace Spring.Testing.NUnit /// Aleksandar Seovic (.NET) public abstract class AbstractDependencyInjectionSpringContextTests : AbstractSpringContextTests { + private bool registerContextWithContextRegistry = true; private bool populateProtectedVariables = false; private AutoWiringMode autowireMode = AutoWiringMode.ByType; private bool dependencyCheck = true; @@ -98,6 +100,17 @@ namespace Spring.Testing.NUnit public AbstractDependencyInjectionSpringContextTests() {} + /// + /// Controls, whether the instance will + /// be registered/unregistered with the global before and after each test. + /// Defaults to true. + /// + public bool RegisterContextWithContextRegistry + { + get { return registerContextWithContextRegistry; } + set { registerContextWithContextRegistry = value; } + } + /// /// Gets or sets a flag specifying whether to populate protected /// variables of this test case. @@ -163,9 +176,13 @@ namespace Spring.Testing.NUnit /// Test setup method. /// [SetUp] - protected virtual void SetUp() + public virtual void SetUp() { this.applicationContext = GetContext(ContextKey); + if (RegisterContextWithContextRegistry) + { + ContextRegistry.RegisterContext(this.applicationContext); + } InjectDependencies(); try { @@ -339,7 +356,7 @@ namespace Spring.Testing.NUnit /// Test teardown method. /// [TearDown] - protected void TearDown() + public void TearDown() { try { @@ -349,6 +366,13 @@ namespace Spring.Testing.NUnit { logger.Error("OnTearDown error", ex); } + finally + { + if (RegisterContextWithContextRegistry) + { + ContextRegistry.Clear(); + } + } } /// diff --git a/src/Spring/Spring.Testing.NUnit/Testing/NUnit/AbstractSpringContextTests.cs b/src/Spring/Spring.Testing.NUnit/Testing/NUnit/AbstractSpringContextTests.cs index fc8122f2..99dcae2f 100644 --- a/src/Spring/Spring.Testing.NUnit/Testing/NUnit/AbstractSpringContextTests.cs +++ b/src/Spring/Spring.Testing.NUnit/Testing/NUnit/AbstractSpringContextTests.cs @@ -43,17 +43,37 @@ namespace Spring.Testing.NUnit /// Map of context keys returned by subclasses of this class, to /// Spring contexts. /// - private static IDictionary contextKeyToContextMap = new Hashtable(); + private static readonly IDictionary contextKeyToContextMap; + + /// + /// Static ctor to avoid "beforeFieldInit" problem. + /// + static AbstractSpringContextTests() + { + contextKeyToContextMap = new Hashtable(); + } + + /// + /// Disposes any cached context instance and removes it from cache. + /// + public static void ClearContextCache() + { + foreach(IApplicationContext ctx in contextKeyToContextMap.Values) + { + ctx.Dispose(); + } + contextKeyToContextMap.Clear(); + } /// /// Logger available to subclasses. /// - protected ILog logger; + protected readonly ILog logger; /// /// Default constructor for AbstractSpringContextTests. /// - public AbstractSpringContextTests() + protected AbstractSpringContextTests() { logger = LogManager.GetLogger(GetType()); } diff --git a/test/Spring/Spring.Testing.NUnit.Tests/Spring.Testing.NUnit.Tests.2003.csproj b/test/Spring/Spring.Testing.NUnit.Tests/Spring.Testing.NUnit.Tests.2003.csproj index ab14073a..855b37c7 100644 --- a/test/Spring/Spring.Testing.NUnit.Tests/Spring.Testing.NUnit.Tests.2003.csproj +++ b/test/Spring/Spring.Testing.NUnit.Tests/Spring.Testing.NUnit.Tests.2003.csproj @@ -94,6 +94,11 @@ Project = "{C5585365-561C-4EC4-8956-87FFBD9AB1CD}" Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" /> + @@ -108,12 +113,7 @@ BuildAction = "None" /> - @@ -121,11 +121,6 @@ RelPath = "Testing\NUnit\TestApplicationContext.xml" BuildAction = "EmbeddedResource" /> - diff --git a/test/Spring/Spring.Testing.NUnit.Tests/Spring.Testing.NUnit.Tests.2008.csproj b/test/Spring/Spring.Testing.NUnit.Tests/Spring.Testing.NUnit.Tests.2008.csproj index 6fb5dde3..918d2cdf 100644 --- a/test/Spring/Spring.Testing.NUnit.Tests/Spring.Testing.NUnit.Tests.2008.csproj +++ b/test/Spring/Spring.Testing.NUnit.Tests/Spring.Testing.NUnit.Tests.2008.csproj @@ -2,7 +2,7 @@ Debug AnyCPU - 9.0.21022 + 9.0.30729 2.0 {4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82} Library @@ -45,9 +45,7 @@ - - - + @@ -71,13 +69,11 @@ Spring.Data.Tests.2008 - - - Always +