[squeak-dev] The Inbox: SUnit-cmm.90.mcz
Chris Muller
asqueaker at gmail.com
Wed Jan 9 20:29:22 UTC 2013
>> I need to set up various special state on all tests of a specialized
>> Suite during initialization of the Suite. But after creating the
>> tests, SUnit then promptly throws them all away which is not only
>> wasteful it loses all of my needed additional-state).
>>
>> setUp and tearDown are intended to, well, set up and tear down any
>> test. Any test that cannot "run again" is broken because it means its
>> setUp and tearDown methods don't do the job they're supposed to.
>>
>> If no objections, I will push this to trunk and delete the
>> #testRanOnlyOnce test.
>
> I don't know the details of your use case, but isn't this what TestResources
> are for? Why are you customizing the initialization of a Suite?
SUnit provides #suiteClass to allow one to create their own custom
TestSuite subclasses. This is *all that's needed* for SUnit to
accomodate the need for resources not to mention many many other
use-cases.
By contrast, the TestResource implementation is just plain bad design.
Very bad. For being overly complex (just look at
TestCase>>#resources), for the added dependencies on TestResource api
(#isAvailable, #reset), for the required overrides on the class-side
of the TestCase just to tell it the class names of the TestResources
(Geez!!), for employing global state to implement it --- what, oh
what, do I get for all of these negatives?
One crummy accessor, #resources which is.... (drum roll please) a Set!
Huh?! I guess that means I need to detect through it to look for
particular resources by class type? Baaaaad.
Which is why I prefer to just use good ol'e OO: Take advantage of
SUnits hook for defining my own TestSuite subclass with its own named
inst-vars for what it needs (resources or whatnot), and send #setUp
and #tearDown to it so it is consistent with treatment of TestCases
and all-around smaller and simpler.
But I do need for SUnit to not subvert its own hooks it provides for
folks doing it this way, which it does without this patch.
More information about the Squeak-dev
mailing list
|