This week's book giveaway is in the Java 8 forum.
We're giving away four copies of Java 8 in Action and have Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft on-line!
See this thread for details.
The moose likes Testing and the fly likes How to categorize my tests? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Engineering » Testing
Bookmark "How to categorize my tests?" Watch "How to categorize my tests?" New topic
Author

How to categorize my tests?

Ashkan Roshanayi
Greenhorn

Joined: Jan 17, 2007
Posts: 11
Hi friends,
I decided to categorize my tests into 4 not necessarily disjoint sets:

1. unit tests : Quicky unit tests
2. slow tests: unit tests that does not run enough fast for continuous builds
3. acceptance tests
4. all tests: Including all categories I mentioned before.

Now what is the best way to define these categorization in your opinion? some options may be:
1. different folders for each one
2. differentiation in names (e.g. MyClassSlowTest or MyClassAcceptanceTest ....)
3. using annotations in source to specify each category (e.g. @slow says to ant that this is not a needed tests in run-fast-unit-tests target...)
4. using a properties/config file (Oh I should remember to edit this each time I add a test, sough)
5. a combination of some of the above ways!!!

Now please share your valuable opinions with me. Your notes are so appreciated
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
Are you using JUnit for all of these tests? Which version?


Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Ashkan Roshanayi
Greenhorn

Joined: Jan 17, 2007
Posts: 11
Hi,
Yes I use junit 3.8.1 (b/c last time I watched ant 1.6.5 does not support junit 4 yet) + EasyMock 2.2 for most of our logic testing.
There are other people to test performance (junitperf) and scalibilty and usability with proper tools.
Any idea? Thanks
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
You could write an abstract base class for your test classes to extend from, which would extend junit.framework.TestCase and override the appropriate runXXX method to skip executing tests if the class implements a certain "marker interface".

The problem then becomes that you are not able to run e.g. only fast tests from the comfort of your IDE. The only way I can think of right now for implementing the categorization in both build scripts and the IDE is 1) different source trees or 2) a set of dynamic test suite classes (i.e. scan through all .class files, try to load the class with Class#forName, and figure out whether it implements some specific interface).
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How to categorize my tests?
 
Similar Threads
Advice on testing persistence
Unit testing of web component - Lot of tools
[Digester] End event threw exception Problem for CactusStrutsTestCase
functional tests vs. unit tests
Extreme performance degradation using prepared statement