Прежде, ваш код не работает.
- Вам не хватает
BenchmarkRule
в вашем тесте.
- Вы не можете назвать класс
Test
при импорте аннотации по имени Test
. Это не скомпилируется.
Поэтому я называю этот класс BenchmarkTest
.
Возвращаясь к вашему вопросу, вы можете использовать BenchmarkOptionsSystemProperties
. В его "документации написано
Глобальные настройки для тестов, заданных через свойства системы. Если указано IGNORE_ANNOTATION_OPTIONS_PROPERTY, свойства системы и значения по умолчанию будут иметь приоритет над аннотациями на уровне метода и класса.
Это позволяет писать обертку следующим
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import com.carrotsearch.junitbenchmarks.BenchmarkOptionsSystemProperties;
public class Wrapper {
public static void main(String[] args) {
System.setProperty(BenchmarkOptionsSystemProperties.IGNORE_ANNOTATION_OPTIONS_PROPERTY, "true");
System.setProperty(BenchmarkOptionsSystemProperties.WARMUP_ROUNDS_PROPERTY, "20");
System.setProperty(BenchmarkOptionsSystemProperties.BENCHMARK_ROUNDS_PROPERTY, "20");
JUnitCore junit = new JUnitCore();
Result result = junit.run(BenchmarkTest.class);
}
}
Предос- тест будет похож на этот
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
import com.carrotsearch.junitbenchmarks.BenchmarkOptions;
import com.carrotsearch.junitbenchmarks.BenchmarkOptionsSystemProperties;
import com.carrotsearch.junitbenchmarks.BenchmarkRule;
public class BenchmarkTest {
@Rule
public TestRule benchmarkRun = new BenchmarkRule(BenchmarkOptionsSystemProperties.getDefaultConsumers());
@Test
@BenchmarkOptions(benchmarkRounds = 1, warmupRounds = 1)
public void test1() {
int tmp = 1 + 2;
}
}
Когда вы затем выполнить Mein-метод обертку вы это вывода, где вы можете видеть, что значения аннотации 1 были переопределены.
BenchmarkTest.test1: [измеренные 20 из 40 раундов, нити: 1 (последовательный)] раунд: 0.00 [+ - 0,00], round.block: 0,00 [+ - 0,00], round.gc: 0,00 [+ - 0,00], GC.calls: 0, GC.time: 0.00, time.tot: 0.01, time.warmup: 0,00, time.bench: 0,00