Hi there !

I am facing a problem with the current execution of maven surefire plugin.

I work on several projects which have several test typologies : simple unit
tests, performance tests, db tests, integration tests, in-container tests
...
=> My problem is to be able to execute either one, few or every typologies
during my maven test execution.

I think I can solve the problem by two ways :
- Use the "standard" way : use my test class FQN to determine the test
typologies. For example, I'll use the name "FooDBTest".
Then, I'll use profiles in order to change includes pattern
(**/*DB*Test.java for DB tests).
=> Problem is : one test class can belong to several "typologies" (for
example, I'd want to execute some "in-container" db tests) => I'll have to
name my tests with horrible names like "FooDBInContainerIntegrationTest"
=> I'm not really persuaded this is the best way ...

- Use the "programmatic" way : use a super "MyTestCase" class which add an
abstract List getTestTypologies() method that every test classes will
override.
=> Problem resides in the implementation of the surefire test runner :
somewhere, I should add my specific code which cast "TestCase" into
"MyTestCase" and work with test typologies.
=> After having looked at surefire plugin (and dependencies) source code, I
think this will be hard to "cleanly incorporate" (bad thing that the
"JunitDirectoryTestSuite" cannot be overrided with plugin parameter
settings)
Moreover, even if I was able to build a "my-maven-surefire-plugin", would it
be possible to branch it on the "standard" "test" maven goal, in place of
the original maven-surefire-plugin ???


I want to precise some points : I can't migrate to TestNG nor Junit4 (for
the first one, because I rely on frameworks using Junit, like spring-mock &
DBUnit, for the second one because I can't use annotations due to java 1.4
compilation)


If someone faced the same problem, I'm interested in ways to solve it, or
success stories ;-)

Cheers,
Frédéric Camblor

Reply via email to