加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:58:02 所属栏目:Java 来源:网络整理
导读:我想运行单个单元测试并收集其“分析”信息:每个方法调用的频率,创建了多少个特定类的实例,执行某个方法/线程需要多长时间等等.然后,我想要将此信息与某些预期值进行比较.是否有任何适用于 Java的Profilers而不是让我这样做(所有这些都应该自动完成,当然没
我想运行单个单元测试并收集其“分析”信息:每个方法调用的频率,创建了多少个特定类的实例,执行某个方法/线程需要多长时间等等.然后,我想要将此信息与某些预期值进行比较.是否有任何适用于 Java的Profilers而不是让我这样做(所有这些都应该自动完成,当然没有任何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 start命令以加载分析器,您必须告诉分析器记录数据并在退出时保存快照.

在JProfiler中,您可以使用“profile” ant task来执行此操作.它从配置文件中获取从JProfiler GUI导出的配置文件设置.您可以使用Controller API开始录制并保存快照.

那你有两个选择:

>您可以使用jpcompare命令行实用程序或相应的“compare” ant task将快照与已知基准进行比较.有several comparisons available.您可以将结果导出为HTML或机器可读格式(CSV / XML).
>您可以使用jpexport命令行实用程序或相应的“export” ant task从快照中提取数据.然后,您可以编写自己的代码来分析特定运行的分析数据.

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读