Cool! The build does now support rerunning a test, but this looks like a much faster way since it will run the test repeatedly in the same JVM.
-Dan On Tue, Jul 28, 2015 at 2:42 PM, John Blum <jb...@pivotal.io> wrote: > Recently, the conversation > < > http://mail-archives.apache.org/mod_mbox/incubator-geode-dev/201507.mbox/browser > > > [0] > came up about how do I "repeat" a test in the Geode test suite. > > Invariably, the answer always centers around build-focused features. While > it is unlikely that the build (i.e. *Gradle*) is going to change anytime > soon, I'd rather see a solution built into the test framework used to test > the codebase. > > Recently, I coded a (not-so-unique) solution > < > https://github.com/codeprimate-software/test-driven-development/blob/master/unit-testing/src/test/java/org/tdd/example/junit/RepeatingTestCasesExampleTest.java#L39-73 > > > [1] > to "repeating" a test case by implementing a *JUnit 4* Rule > <https://github.com/junit-team/junit/wiki/Rules> [2] (RepeatRule > < > https://github.com/codeprimate-software/test-driven-development/blob/master/unit-testing/src/main/java/org/tdd/junit/rules/RepeatRule.java > > > [3]) > and a @Repeat annotation > < > https://github.com/codeprimate-software/test-driven-development/blob/master/unit-testing/src/main/java/org/tdd/junit/Repeat.java > > > [4]. > This was inspired from and implemented by other developers and frameworks > (e.g. the *Spring Framework's* @Repeat > < > http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#integration-testing-annotations-junit > > > [5] test annotation). > > Unfortunately, the problem with most implementations is they require the > use of a custom, *JUnit* Test Runner > <https://github.com/junit-team/junit/wiki/Test-runners> [6]. The downside > then is, you are unable to use other test runners for other purposes, such > as using *JUnit's* Parameterized > <https://github.com/junit-team/junit/wiki/Parameterized-tests> [7] tests, > which requires the use of the Parameterized test runner, since the @RunWith > annotation > < > https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/runner/RunWith.java#L35 > > > [8] > only accepts a single test runner. Therefore, it is better to run as a > *JUnit* Rule. > > To repeat a test, a developer just need annotate their test case method > like so... > > @Test > *@Repeat(10)* > public void someTestCase() { > ... > } > > The @Repeat annotation accepts the a String value and defaults to 1 (run). > The String type makes it handy to enable the use of System properties (with > your own convention(s)) to control the number of runs from the > command-line, using whatever build you desire (e.g. Gradle/Maven/Ant), or > even from within your IDE, for example... > > Given... > > @Test > *@Repeat("test.runs")* > public void someTestCase() { > .. > } > > $ gradlew test -Dsingle.test=MyTestSuiteClass *-Dtest.runs=10* > > > If the System property is not specified, the test run count defaults to 1. > If the value is not "parseable" or "resolvable" (using a System property) > as a numeric value, the test run count defaults to 1. > > The only downside to the Annotation approach is now you need to annotate > each test case method with @Repeat annotation that you want to repeat. > But, this is a 1 time thing and functions accordingly thereafter. > > If the community so desires, this solution can be integrated into the > *Apache > Geode* test codebase. I have filed GEODE-166 > <https://issues.apache.org/jira/browse/GEODE-166> [9] with the attached > source files for reference. I have limited time to perform this > integration at the moment. > > Cheers, > > -- > -John > 503-504-8657 > john.blum10101 (skype) > > [0] - > > http://mail-archives.apache.org/mod_mbox/incubator-geode-dev/201507.mbox/browser > [1] - > > https://github.com/codeprimate-software/test-driven-development/blob/master/unit-testing/src/test/java/org/tdd/example/junit/RepeatingTestCasesExampleTest.java#L39-73 > [2] - https://github.com/junit-team/junit/wiki/Rules > [3] - > > https://github.com/codeprimate-software/test-driven-development/blob/master/unit-testing/src/main/java/org/tdd/junit/rules/RepeatRule.java > [4] - > > https://github.com/codeprimate-software/test-driven-development/blob/master/unit-testing/src/main/java/org/tdd/junit/Repeat.java > [5] - > > http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#integration-testing-annotations-junit > [6] - https://github.com/junit-team/junit/wiki/Test-runners > [7] - https://github.com/junit-team/junit/wiki/Parameterized-tests > [8] - > > https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/runner/RunWith.java#L35 > [9] - https://issues.apache.org/jira/browse/GEODE-166 >