你如何 运行 使用 hprof 进行 maven 单元测试

How do you run maven unit tests with hprof

我想弄清楚为什么单元测试需要 运行 秒而不是毫秒。这是一个重大问题,因为超过 ~300 次测试 类,这会在 20 分钟内产生结果。我希望在我的 Maven 单元测试中使用性能分析器(如 java HPROF)。然后我会自己分析 hprof 输出。

我将以下 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 和 class loading.

的组合