Я пытаюсь понять, почему модульные тесты выполняются за секунды, а не за миллисекунды. Это серьезная проблема, потому что более 300 тестовых классов занимают 20 минут. Я надеюсь использовать анализатор производительности (например, java HPROF) с моими модульными тестами maven. Затем я проанализирую вывод hprof самостоятельно.
Как вы запускаете модульные тесты maven с помощью hprof
comment
Если вы запустите тесты через maven, вы получите вывод о том, как каждый тестовый класс выполняет тесты. После этого вы можете погрузиться в классы с наиболее трудоемкими тестами...
- person khmarbaise   schedule 26.08.2017
comment
Да. Проблема была не в том, что существует какой-то особый медленный тестовый класс. Это было у всех :(
- person joseph   schedule 28.08.2017
Ответы (1)
Я добавил приведенную ниже конфигурацию argline в свой блок плагинов surefire.
<configuration>
<forkMode>never</forkMode>
<argLine>
-agentlib:hprof=cpu=samples,lineno=y,depth=3,file=hprof.samples.txt
</argLine>
...
<configuration>
Вы не должны разветвлять JVM. Все тесты должны повторно использовать один и тот же jvm, чтобы это работало.
Это создает файл hprof (см.: https://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html). Это дает вам подсказки о том, какая часть кода замедляет работу. В моем случае это была комбинация reuseFork=never и загрузки класса.
person
joseph
schedule
28.08.2017