We have been taught that unit tests should be repeatable and most people (including the author) for a long time considered this an equivalent to “static”, single-path execution. Solr and Lucene employed an interesting JUnit runner strategy where tests are randomized: run with various data, various implementation of allowed interfaces, various configurations.
The number of combinations makes running all of them as individual tests and execution randomization proves very successful at pinpointing implementation and regression bugs. This talk will provide an overview of this approach and practical considerations on when and how to port them to your own projects. The presentation is based on an open source scaffolding code for running randomized tests and for running tests on separate parallel JVMs.
Video Producer: GeeCON