I'm suffering from this as well. The 2.4-collab-SNAPSHOT has plenty of unfixed bugs and I unfortunately cannot use this version.
As for forkMode=always, this is a relatively common practice in unit tests. Consider the following scenarios:
1. I have a crucial static variable and would like it reset to a known state for each test / test class
2. I bootstrap my unit tests with some data by using an in-memory database that's created on the fly and would like it to be reset to a known state for each test/test class as well
In either of these scenarios, the only way to return to a known state in a unit test is to ensure you're starting with a fresh JVM.
I get that TestNG offers some testing functionality that is "outside" the unit testing paradigm (@BeforeSuite and @AfterSuite), but I agree with Benjamin... let's let the developer use whatever configuration he/she wants and let them make their own mistakes.