This seemed to spark a bit of conversation on another question and I thought it worthy to spin into its own question.
The DRY principle seems to be our weapon-of-choice for fighting maintenance problems, but what about the maintenance of test code? Do the same rules of thumb apply?
A few strong voices in the developer testing community are of the opinion that setup and teardown are harmful and should be avoided... to name a few:
In fact, xUnit.net has removed them from the framework altogether for this very reason (though there are ways to get around this self-imposed limitation).
What has been your experience? Do setup/teardown hurt or help test maintainability?
UPDATE: do more fine-grained constructs like those available in JUnit4 or TestNG (@BeforeClass, @BeforeGroups, etc.) make a difference?