Given question 'How to run all tests belonging to a certain Category?' and the answer would the following approach be better for test organization?
- define master test suite that contains all tests (e.g. using ClasspathSuite)
- design sufficient set of JUnit categories (sufficient means that every desirable collection of tests is identifiable by one or more categories)
- qualify each test with relevant category(ies)
- define targeted test suites based on master test suite and set of categories
Example:
- identify categories for speed (slow, fast), dependencies (mock, database, integration, etc.), function (fill in applicable categories), domain (fill in applicable categories), etc.
- demand that each test is properly qualified (tagged) with relevant set of categories.
- create master test suite using ClasspathSuite (all tests found in classpath)
- create targeted suites by qualifying master test suite with categories, e.g. mock test suite, fast database test suite, slow integration for domain X test suite, etc.
My question is more like soliciting approval rate for such approach vs. classic test suite approach. One unbeatable benefit is that every new test is immediately contained by relevant suites with no suite maintenance. One concern is proper categorization of each test.