在 Junit 中使用 Java 分析器

Qua*_*ico 5 java profiler junit profiling

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

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

或者,如果某个方法运行了超过 X 分钟,它应该会失败。

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

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

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

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

Ing*_*gel 0

JProfiler 有一个可用于此目的的 API。在JProfiler安装中,查看api/samples/platform directory并签出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();
Run Code Online (Sandbox Code Playgroud)

免责声明:我的公司开发 JProfiler。