I have a set of base tests that are used to test multiple implementations of a interface. The way I modelelled this was by creating a base text fixture with a [Ignore] attribute.

[TestFixture]
[Ignore]
public class BaseTests
{
     // Use your imagination for the actual name
     public virtual ITestableThing GetConcrete()
     {
         return null;
     }

     // All of my unit tests here
}

And then I write a subclass for each interface implementation:

public class ConcreteThingTests :  BaseTests
{
    public override ITestableThing GetConcrete()
    {
        return new ConcreteThing();
    }
}

This works well, as I have all of the tests for ALL implementations in one place, and the sub classes just specify the implementation.

The problem is that I have to put the [Ignore] attribute on the base class, or NUnit will try to run the tests (and fail).

Because of this, my test results are always cluttered up with a set of Ignored tests, and while it's not a big deal, I thought there might be a better pattern for this that avoids having to ignore tests.

So, am I implementing test fixture inheritance wrong?

Edit
Report