在Junit中使用Java Profiler

是否有可以作为JUnit测试的一部分集成的
Java分析器.

例如,我想要一个条件,如果测试中的某个方法使用超过X%的CPU,测试应该失败/通过.

或者,如果某个方法的运行时间超过X分钟,则应该失败.

我在这里查看了YourKit,JVM监视器和其他建议的工具,以及
运行java -Xrunhprof:cpu = samples,file = myprogram.hprof

但所有这些都不能用作测试的一部分.

我也可以从测试中调用探查器,将结果(自动)保存到csv / txt /任何其他文件,并编写一些代码来提取信息.

如果存在,开源/免费工具会更好

最佳答案 JProfiler有一个可用于此目的的API.在JProfiler安装中,查看api / samples / platform目录并查看src-profiler / TestProfiler.java

粗略地说,代码可能如下所示:

Connection connection = ConnectionFactory.getLocalConnection();

connection.recordCpuData(true);
// TODO execute unit test
connection.recordCpuData(false);

CpuHotspots cpuHotspots = connection.getCpuHotspots(null, Aggregation.METHOD,
        ThreadStatus.RUNNING, true);

List<ProfilingValue> hotspots = cpuHotspots.getHotspots();
Collections.sort(hotspots);
// TODO analyze hot spots

connection.close();

免责声明:我公司开发JProfiler.

点赞