gpt4 book ai didi

java - 自动比较单个单元测试的 Java 分析结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:51 25 4
gpt4 key购买 nike

我想运行一个单元测试并收集它的“分析”信息:调用每个方法的频率、创建了多少个特定类的实例、执行特定方法/线程花费了多少时间等。然后,我想将此信息与一些预期值进行比较。是否有任何 Java 分析器可以让我这样做(当然,所有这些都应该自动完成,无需任何 GUI 或用户交互)?

这就是我希望它的工作方式:

public class MyTest {
@Test
public void justTwoCallsToFoo() {
Profiler.start(Foo.class);
Foo foo = new Foo();
foo.someMethodToProfile(); // profiler should collect data here
assertThat(
Profiler.getTotalCallsMadeTo(Foo.class, "barMethod"),
equalTo(3)
);
}
}

最佳答案

使用多个 Java 分析器可以自动捕获分析信息的快照,您必须将 VM 参数添加到 Java 启动命令以加载分析器,并且必须告诉分析器记录数据并在退出时保存快照。

JProfiler , 你可以使用 "profile" ant task去做这个。它从 JProfiler GUI 导出的配置文件中获取分析设置。您可以使用 Controller API开始录制并保存快照。

那么你有两个选择:

  1. 您可以使用jpcompare 命令行工具或相应的"compare" ant task将快照与已知基线进行比较。有several comparisons available .您可以将结果导出为 HTML 或机器可读格式 (CSV/XML)。

  2. 您可以使用jpexport 命令行实用程序或相应的"export" ant task 从快照中提取数据。 .然后您可以编写自己的代码来分析来自特定运行的分析数据。

对于一组有限的分析数据,实际上可以使用 JProfiler API 编写您自己的分析器,它执行类似 Profiler.getTotalCallsMadeTo(Foo.class, "barMethod") 的操作你的例子。请参阅 JPofiler 安装中的 api/samples/platform 示例。您将从热点数据中获取信息。

但是,为了断言特定方法是否被调用,我建议采用基于 AOP 的方法。使用基于探查器的方法适合检测性能回归。

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

关于java - 自动比较单个单元测试的 Java 分析结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com