I'd like to do the following:
- add 3 empty interfaces to the "common" project:
- SmallTest – for true "unit" tests that don't hit disk or network and don't sleep
- MediumTest – for functional tests that check a subsystem and might use local disk or loopback sockets, but should still run in under a few seconds. For example, HDFS tests that start a NN but no DNs.
- LargeTest – for system-wide functional tests - for example things like TestHDFSCLI that take several minutes but cover a large swath of the system.
These would be used with the JUnit 4.8 @Category annotation, eg @Category(LargeTest.class).
These are modeled after the categories in this excellent article: http://googletesting.blogspot.com/2009/07/software-testing-categorization.html
- mark the existing tests in src/test/unit as @Category(SmallTest.class), and move them into src/test/java.
We can use these annotations to have different test targets for the different size tests using the functionality in http://jira.codehaus.org/browse/SUREFIRE-329 once that's released