Benjamin Bentmann has filed bug SUREFIRE-446
http://jira.codehaus.org/browse/SUREFIRE-446
Maven Surefire provides a facility for various "fork modes":
* forkMode=once: The default mode, spawns a separate TestNG process (like
the TestNG Ant task)
* forkMode=never: run TestNG in the same process as Maven, in an isolated
classloader
* forkMode=always: launch TestNG N times for N tests; if one test
segfaults or calls System.exit or something, the other tests can run to
completion safely.
I didn't test forkMode=always with TestNG in Surefire 2.4, and sure enough
it doesn't work at all. (It runs the tests but reports 0 tests
passed/failed.)
It does work basically OK for JUnit, where classes are normally isolated
from each other, but I'm not sure it even makes sense for TestNG tests,
where one test may depend on tests in other classes (multi-class dependent
methods).
I can kind of hack it so it works OK if you don't have multi-class
dependent methods, but if you DO have multi-class dependent methods, it
fails with a TestNGException: "MyTest.testFoo() is depending on
nonexistent method otherClassSetUp".
What should I do here? Put in the hack and let the user figure out the
TestNGException if they try to use multi-class dependent methods? Fail
with a clean error if the user tries to use forkMode=always with TestNG?
Something else?
Should forkMode=always be a feature of TestNG somehow?
-Dan