← Back to team overview

nunit-core team mailing list archive

[Bug 701331] Re: TestFixture attributes on base classes are not ignored

 

The documentation reflected an earlier version of the code and was no
longer correct. It has now been corrected online.

** Changed in: nunitv2/2.5
       Status: Triaged => Fix Committed

** Changed in: nunitv2/trunk
       Status: Triaged => Fix Committed

-- 
You received this bug notification because you are a member of NUnit
Developers, which is subscribed to NUnit V2.
https://bugs.launchpad.net/bugs/701331

Title:
  TestFixture attributes on base classes are not ignored

Status in NUnit V2 Test Framework:
  Fix Committed
Status in NUnit V2 2.5 series:
  Fix Committed
Status in NUnit V2 trunk series:
  Fix Committed

Bug description:
  Using Nunit 2.5.9 GUI Runner & 2.5.9 framework.

  TestFixutre attributes on derived classes should replace any declared
  on superclasses, which is what is described in the documentation:

  http://nunit.org/index.php?p=testFixture&r=2.5.9
  ----------------------------------------------------------------
   Inheritance

  The TestFixtureAttribute may be applied to a base class and is
  inherited by any derived classes. This includes any abstract base
  class, so the well-known Abstract Fixture pattern may be implemented
  if desired.

  In order to facilitate use of generic and/or parameterized classes, where the derived class may require a different number of arguments (or type arguments) from the base class, any TestFixture attribute on a derived class causes those on the base classes to be ignored.
  -----------------------------------------------------------------

  However this isn't happening as the following test case shows.

  Reproducible Test Case:
  -------------------------------------------------------------
      [TestFixture(typeof(TagClassDefault))]
      public abstract class AbstractBase<T>
      {
          [Test]
          public void TestMethod()
          {
          }
      }

      [TestFixture(typeof(TagClassCustom))]
      public class ConcreteClass<T> : AbstractBase<T>
      {
      }

      public class TagClassDefault
      {
      }

      public class TagClassCustom
      {
      }

  -----------------------------------

  Expected Behaviour:
   ConcreteClass is constructed with the TagClassCustom type parameter only

  Actual Behaviour:
   ConcreateClass is constructed twice, once with TagClassCustom, the other with TagClassDefault



References