com.github.yag.punner.suite.PSuiteBuilder.kt Maven / Gradle / Ivy
Go to download
Punner is a parallel JUnit test runner and maven plugin which can speed up your unit test.
package com.github.yag.punner.suite
import com.github.yag.punner.core.Punner
import org.junit.internal.builders.AllDefaultPossibilitiesBuilder
import org.junit.internal.builders.AnnotatedBuilder
import org.junit.runner.Runner
import org.junit.runners.BlockJUnit4ClassRunner
import org.junit.runners.model.RunnerBuilder
import org.slf4j.LoggerFactory
internal class PSuiteBuilder(canUseSuiteMethod: Boolean, private val overrideDefault: Boolean) : AllDefaultPossibilitiesBuilder(canUseSuiteMethod) {
override fun annotatedBuilder(): AnnotatedBuilder {
return PAnnotatedBuilder(this, overrideDefault)
}
}
internal class PAnnotatedBuilder(runnerBuilder: RunnerBuilder, private val overrideDefault: Boolean) : AnnotatedBuilder(runnerBuilder) {
override fun runnerForClass(testClass: Class<*>): Runner? {
val runner = super.runnerForClass(testClass)
return if (overrideDefault && (runner == null || runner is BlockJUnit4ClassRunner)) {
LOG.debug("Override default runner with Punner.")
Punner(testClass)
} else {
runner
}
}
companion object {
private val LOG = LoggerFactory.getLogger(PAnnotatedBuilder::class.java)!!
}
}