Not knowing anything else about your objects, I'm wondering if the original (production code) objects are built properly.
If your testcase is "make sure all the objects start".. then
you should be able to handle all the object by their base class, and call the 'startMeUp()' method on the base class reference, and no problems will ensue.
But if the objects name the method different things like 'startMeUp' and 'run()' and 'doIt()' Then I have sympathy for the tester and I shake my fist at the original coder.
Alternately, if your objects are designed properly, but you are performing different tests on the different objects, then this is just a fact of life.. you can't dynamically and polymorphically do this.
Instead of using instanceof, simply don't use a superclass but do hardcode each object's test cases. We have done something somewhat similar here at my job. There is a TestRunner class. There is also a abstract TestCase class. TestCase contains a run() method (among others). For every object we want to make a TestCase for, we make a new class, which provides the implementation for run() method. Inside this run method is where we'd put the object-specific method calls, etc. The TestRunner class contains an array of TestCase classes, which can then polymorphically

call the run() method of each TestCase. So we don't use instanceof, so much as brute force.
That would seem (to me) to be only marginally more work than the 'framework' of sorts you have to construct using instanceof and a bunch of if-elses. I know that from my own experience, i've tried to do something simliarly 'clever' and just ended up wasting time.
Did any of that make sense?
[This message has been edited by Mike Curwen (edited August 15, 2001).]