Hi.

In Maven itself and its plugins there's a deep hierarchy of test classes based 
on `PlexusTestCase`, which extends `junit.framework.TestCase`.

Although we've been using the `Junit4` library for a long time, the actual 
tests are still public unannotated methods, starting with the word "test".

The current approach is to mark ignored tests as succeeded. In particular, when 
testing the `maven-scm-provider-cvsexe` project in the absence of the `cvs` 
binary, it prints:

    Running 
org.apache.maven.scm.provider.cvslib.cvsexe.command.changelog.CvsExeChangeLogCommandTest
    'cvs' is not a system command. Ignored testGetCommandWithBranchOrTag.
    'cvs' is not a system command. Ignored testGetCommandWithStartAndEndDate.
    'cvs' is not a system command. Ignored testGetCommandWithoutEndDate.
    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

This summary is undesired. It should have: `Skipped: 3`. As answered in 
https://stackoverflow.com/questions/1689242/conditionally-ignoring-tests-in-junit-4
 , we should use `org.junit.Assume` to conditionally skip tests, but this 
doesn't work in unannotated Junit3-style test cases.

Removing TestCase from ancestors is barely an option, because our tests 
actively use the methods inherited from it.

Annotating a particular class with `@RunWith(JUnit4.class)` will disable all 
unannotated tests in this class and its descendants.

Is there a switch to make the JUnit4 runner run unannotated tests? Any other 
ideas?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to