I guess the reason is that execute tests several times. Gradle caches test results. In other words, if you execute the same tests with the same source, then the build does not execute tests again. However, if you modify test code and/or change dependency, then tests would be re-executed.
batchTests are not cached though since they depend on external systems, so if you execute ./gradlew batchTests, then it will take some time (batch tests are executed sequentially for now). I think it is expected that we cache test results. If we have randomized tests and or tests that depend on external systems, we should configure them accordingly so Gradle does not cache them. WDYT? Vladimir