← Back to team overview

nunit-core team mailing list archive

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

 

** Description changed:

  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
+  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. This allows use of code like the following: 
+ 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.
  -----------------------------------------------------------------
  
- Example:
+ 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(TagClassDefault))]
+     public abstract class AbstractBase<T>
+     {
+         [Test]
+         public void TestMethod()
+         {
+         }
+     }
  
+     [TestFixture(typeof(TagClassCustom))]
+     public class ConcreteClass<T> : AbstractBase<T>
+     {
+     }
  
-     [TestFixture(typeof(TagClassCustom))]
-     public class ConcreteClass<T> : AbstractBase<T>
-     {
-     }
+     public class TagClassDefault
+     {
+     }
  
- 
-     public class TagClassDefault
-     {
-     }
- 
-     public class TagClassCustom
-     {
-     }
+     public class TagClassCustom
+     {
+     }
  
  -----------------------------------
  
  Expected Behaviour:
-  ConcreteClass is constructed with the TagClassCustom type parameter only
+  ConcreteClass is constructed with the TagClassCustom type parameter only
  
  Actual Behaviour:
-  ConcreateClass is constructed twice, once with TagClassCustom, the other with TagClassDefault
+  ConcreateClass is constructed twice, once with TagClassCustom, the other with TagClassDefault

-- 
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:
  New

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