in junit-addons/src/main/java/com/mycila/junit/concurrent/ConcurrentSuite.java [32:68]
public ConcurrentSuite(Class<?> klass) throws InitializationError {
super(klass, new AllDefaultPossibilitiesBuilder(true) {
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
List<RunnerBuilder> builders = Arrays.asList(
new RunnerBuilder() {
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
Concurrency annotation = testClass.getAnnotation(Concurrency.class);
return annotation != null ? new ConcurrentJunitRunner(testClass) : null;
}
},
ignoredBuilder(),
annotatedBuilder(),
suiteMethodBuilder(),
junit3Builder(),
junit4Builder());
for (RunnerBuilder each : builders) {
Runner runner = each.safeRunnerForClass(testClass);
if (runner != null)
return runner;
}
return null;
}
});
int nThreads = 0;
if (klass.isAnnotationPresent(Concurrency.class))
nThreads = Math.max(0, klass.getAnnotation(Concurrency.class).value());
if (nThreads == 0) {
SuiteClasses suiteClasses = klass.getAnnotation(SuiteClasses.class);
nThreads = suiteClasses != null ? suiteClasses.value().length : Runtime.getRuntime().availableProcessors();
}
setScheduler(new ConcurrentRunnerScheduler(
klass.getSimpleName(),
Math.min(Runtime.getRuntime().availableProcessors(), nThreads),
nThreads));
}