我试图弄清楚为什么单元测试需要几秒钟而不是几毫秒来运行。这是一个重要的问题,因为超过 300 个测试类,需要 20 分钟才能得到结果。我的希望是在我的 Maven 单元测试中使用性能分析器(如 java HPROF)。然后我会自己分析 hprof 输出。
最佳答案
我将以下argline配置添加到我的surefire插件 block 中
<configuration>
<forkMode>never</forkMode>
<argLine>
-agentlib:hprof=cpu=samples,lineno=y,depth=3,file=hprof.samples.txt
</argLine>
...
<configuration>
您不得 fork JVM。所有测试都必须重用相同的 jvm 才能正常工作。
这会生成一个 hprof 文件(请参阅: https://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html )。这会提示您代码的哪一部分导致速度变慢。就我而言,它是reuseFork=never 和类加载的组合。
关于java - 如何使用 hprof 运行 Maven 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45885434/