> suddenly the correctness of the test becomes dependent on the order tests are run in preventing you from running subsets
I once write a test library where you could annotate tests with TestA requires TestB which in turn requires TestC, and it automatically runs all the requirements for each test.
This seemed to work quite nicely.
> tests need to be as maintainable as the code itself.
Yes, if not more so. Tests that are a hassle to use won't get used, and so are useless.