Пустые тесты при запуске образцов JMH в Intellij IDEA

У меня есть некоторые проблемы с использованием JMH.

Итак, я создаю пустой проект в Intellij Idea, затем в структуру проекта добавляю jmh-core JAR-файл. Наконец, попробуйте запустить образцы, например

import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

public class JMHSample_01_HelloWorld {
    @GenerateMicroBenchmark
    public void wellHelloThere() {
        // this method was intentionally left blank.
    }
    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(".*" + JMHSample_01_HelloWorld.class.getSimpleName() + ".*")
                .forks(1)
                .build();

        new Runner(opt).run();
    }

}

но результат

No matching benchmarks. Miss-spelled regexp?
Use EXTRA verbose mode to debug the pattern matching.

Process finished with exit code 0

с использованием verbosity(VerboseMode.EXTRA)

No matching benchmarks. Miss-spelled regexp?
Benchmarks: 

Process finished with exit code 0

Я попытался изменить выходной путь на projectFolder\target\classes, но ничего не изменилось. Затем я посмотрел исходный код в режиме отладки и увидел, что resource = "/META-INF/MicroBenchmarks",urls.hasMoreElements() ложно и, следовательно, benchmarks пусто. Затем я увидел в образцах jar-файл, в котором есть файл MicroBenchmarks с информацией о тестах и ​​хорошо работает.

Так вот вопрос, что я делаю не так? Должен ли я писать информацию о тесте вручную?


person Enegue    schedule 05.04.2014    source источник


Ответы (1)


Пожалуйста, следуйте инструкциям на странице JMH, чтобы настроить тестовый проект, а именно:

«Убедитесь, что вы попробовали следующие вещи, прежде чем обращаться за поддержкой: - Архетипы обеспечивают золотую конфигурацию сборки. Попробуйте создать чистый проект эталонного теста JMH и перенести туда эталонный тест. Это важно попробовать при обновлении до более новой версии. JMH, поскольку незначительные различия в конфигурациях сборки могут быть связаны с ошибками, которые вы видите».

Если вы последуете этому, вы заметите, что вам также нужно добавить jmh-generator-annprocess в качестве зависимости и убедиться, что он работает, прежде чем запускать какой-либо тест.

person Aleksey Shipilev    schedule 06.04.2014