Hi Martin,
Attributes are sealed in NUnitLite for several reasons...
1) Most .NET BCL attributes are sealed.
2) NUnit attributes *were* sealed at the time NUnitLite
was created.
3) Allowing inheritance would probably lead folks to
imagine that the derived attributes should work in
marking tests, etc. but they would not - or at least
did not in the past.
More recently, NUnit was modified to allow most attributes
to be inherited from *and* to actually work. So, in NUnit,
if you derive SpecAttribute from TestAttribute, it will
actually work. In the current state of NUnitLite, the results
would be mixed, depending on the Attribute, but eventually
they will be unsealed and actually made to work.
Unless you have a reason to need a very small footprint for
your application, I'd suggest basing it on NUnit 2.5. Currently,
it has features that have not yet made it into NUnitLite,
although they will be migrated there later this year.
Eventually, the two frameworks will be based on the same
source code with some conditional compilation.
Looking at your blog post, I'd say that most of what you
want to do is easy enough to do using NUnit. If you
aren't familiar with the Constraint model in NUnit 2.4
and (especially) 2.5, I suggest taking a look at it.
You may be able to build everything on top of the
pre-existing constraints in NUnit.
If you'd care to describe any other kinds of things you want
to layer on top of NUnit, I'd be glad to make more detailled
suggestions.
Also, on the nunit-discuss list, two guys are currently
debating alternate syntaxes for their own extensions
layered on top of NUnit. Their goals are different from
yours, but some of the techniques would apply equally.
Charlie