是否有可以作为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.