← Back to team overview

nunit-core team mailing list archive

[Bug 590970] [NEW] static TestFixtureSetUp/TestFixtureTearDown methods in base classes are not run

 

Public bug reported:

NUnit 2.5.5.  Even though TestFixtureSetUp/TestFixtureTearDown methods
can be static, if they are defined them in a base class, they won't be
executed.  From looking at the code, it seems like the problem is that
the reflection code to find fixture setup/teardown methods does not
search base classes.

To reproduce:

using System;
using NUnit.Framework;

public class TestBase
{
	[TestFixtureSetUp]
	public static void TestBaseTestFixtureSetUp()
	{
		Console.Out.WriteLine("TestBase TestFixtureSetUp");
	}
	
	[TestFixtureTearDown]
	public static void TestBaseTestFixtureTearDown()
	{
		Console.Out.WriteLine("TestBase TestFixtureTearDown");
	}
}

public class TestDerived : TestBase
{
	[TestFixtureSetUp]
	public static void TestFixtureSetUp()
	{
		Console.Out.WriteLine("TestDerived TestFixtureSetUp");
	}
	
	[TestFixtureTearDown]
	public static void TestFixtureTearDown()
	{
		Console.Out.WriteLine("TestDerived TestFixtureTearDown");
	}
	
	[Test]
	public void TestMethod()
	{
		Console.Out.WriteLine("TestMethod");
	}
}

When you run this test, it only prints messages for the TestDerived
class, not for TestBase.

** Affects: nunitv2
     Importance: Undecided
         Status: New

-- 
static TestFixtureSetUp/TestFixtureTearDown methods in base classes are not run
https://bugs.launchpad.net/bugs/590970
You received this bug notification because you are a member of NUnit
Developers, which is subscribed to NUnit V2.

Status in NUnit V2 Test Framework: New

Bug description:
NUnit 2.5.5.  Even though TestFixtureSetUp/TestFixtureTearDown methods can be static, if they are defined them in a base class, they won't be executed.  From looking at the code, it seems like the problem is that the reflection code to find fixture setup/teardown methods does not search base classes.

To reproduce:

using System;
using NUnit.Framework;

public class TestBase
{
	[TestFixtureSetUp]
	public static void TestBaseTestFixtureSetUp()
	{
		Console.Out.WriteLine("TestBase TestFixtureSetUp");
	}
	
	[TestFixtureTearDown]
	public static void TestBaseTestFixtureTearDown()
	{
		Console.Out.WriteLine("TestBase TestFixtureTearDown");
	}
}

public class TestDerived : TestBase
{
	[TestFixtureSetUp]
	public static void TestFixtureSetUp()
	{
		Console.Out.WriteLine("TestDerived TestFixtureSetUp");
	}
	
	[TestFixtureTearDown]
	public static void TestFixtureTearDown()
	{
		Console.Out.WriteLine("TestDerived TestFixtureTearDown");
	}
	
	[Test]
	public void TestMethod()
	{
		Console.Out.WriteLine("TestMethod");
	}
}

When you run this test, it only prints messages for the TestDerived class, not for TestBase.





Follow ups

References