Indirectly answering your question, you could just define an empty
derive method in your AbstractSuite.

class AbstractSuite < Test::Unit::TestCase
   def test_foo()
       p derive()
   end
   def derive; end
end

Everything else remains the same, although the output from auto runner
will be a bit screwy (3 tests in this case, rather than the expected
2).

Chris

On 9/7/06, Phlip <phlipcpp / yahoo.com> wrote:
> Rubies:
>
> I'm trying to get some elaborate test suites working via the hidden call to
> AutoRunner.
>
> Because I can't declare which suites to run, the system tests anything that
> derives from TestCase.
>
> I want to do this:
>
> class AbstractSuite < Test::Unit::TestCase
>     def test_foo()
>         p derive()
>     end
> end
>
> class ConcreteSuiteA < AbstractSuite
>     def derive()
>         return 'like this'
>     end
> end
>
> class ConcreteSuiteB < AbstractSuite
>     def derive()
>         return 'like that'
>     end
> end
>
> That's the skeleton of the Abstract Test pattern, which is a major Good
> Thing. It prevents us from writing zillions of duplicate test cases with
> minimal differences between each one. For example, my derive() could return
> an object that must pass the same tests as another object, obeying Liskov
> Substitution Principle.
>
> However, I can't do it like that, because AutoRunner hoovers up every class
> derived from TestCase, and runs all of them as suites. I predictably get
> "test_foo(AbstractSuite): NoMethodError: undefined method `derive'"
>
> The ugly fix is this:
>
> class ConcreteSuiteA < Test::Unit::TestCase
>     def test_foo()
>         p derive()
>     end
>
>     def derive()
>         return 'like this'
>     end
> end
>
> class ConcreteSuiteB < ConcreteSuiteA
>     def derive()
>         return 'like that'
>     end
> end
>
> That works, but it's "not OO". ConcreteSuiteB is not truly a derived version
> of ConcreteSuiteA.
>
> So I'm asking this question because I don't understand mixins, or
> AutoRunner, enough to fix this.
>
> Could a mixin grant test cases to two concrete classes? Alternately, does
> AutoRunner have a feature to bump a suite from its list?
>
> --
>   Phlip
>   http://c2.com/cgi/wiki?ZeekLand <-- NOT a blog!!!
>
>
>
>