栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 性能测试框架工具-JunitPerf 快速上手

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 性能测试框架工具-JunitPerf 快速上手

一、背景

最近写文章需要了解和对比一些函数的性能差异,因此在网上找到了一个简单易用的 Java 性能测试框架 junitperf。

官方介绍它的优势是:

  • 可以和 Junit5 完美契合。
  • 使用简单,便于项目开发过程中的测试实用。
  • 提供拓展,用户可进行自定义开发。
二、范例 2.1 依赖


    org.junit.jupiter
    junit-jupiter-api
    5.6.0
    test




      com.github.houbb
      junitperf
      2.0.3

通过依赖就可以大致了解其原理:
https://mvnrepository.com/artifact/com.github.houbb/junitperf/2.0.3

大家可以使用本人在剖析《阿里巴巴 Java 开发手册》专栏中讲到的“先猜想后验证” 的学习方法,这样印象更深刻,学习效果更好

通过上图,我们可以猜测,该框架使用 freemarkder 生成 HTML 报告,使用 commons-math3 进行性能计算,使用 junit-jupiter-engine 支持 Junit 5的特性等。

感兴趣大家可以 clone 项目深入研究。

大家还可以通过查看单元测试的方式快速掌握用法:

2.2 示例

使用很简单,建议直接进入 JunitPerfConfig 直接中看注释即可明白每个属性的含义。

希望大家平时学习新技术时,也可以尝试通过这种方式,快速了解用法。


@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
@documented
@API(status = API.Status.MAINTAINED, since = VersionConstant.V2_0_0)
@ExtendWith(PerfConfigProvider.class)
@TestTemplate
public @interface JunitPerfConfig {

    
    int threads() default 1;

    
    long warmUp() default 0L;

    
    long duration() default 60_000L;

    
    Class statistics() default DefaultStatisticsCalculator.class;

    
    Class[] reporter() default {ConsoleReporter.class};

}

因此随手写个示例:

import com.github.houbb.junitperf.core.annotation.JunitPerfConfig;
import com.github.houbb.junitperf.core.report.impl.ConsoleReporter;
import com.github.houbb.junitperf.core.report.impl.HtmlReporter;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class PerfTest {

    @JunitPerfConfig(threads = 10, warmUp = 1_000, duration = 30_000
     , reporter = {HtmlReporter.class, ConsoleReporter.class})
    public void newStrTestStringBuilder() {
 StringBuilder stringBuilder = new StringBuilder("demo");
 for (int i = 0; i < 100; ++i) {
     stringBuilder.append(i);
 }
 log.info(stringBuilder.toString());
    }
}

通过 reporter 可以配置 HTML 方式和 控制台方式的报告,下图为 HTML 方式(在 target 目录的 junitperf 文件夹对应的包名下):

三、总结

该框架虽然在国内不是特别出名,但是非常简单易用,对于要求不高的朋友来说已经非常不错了。
掌握学习的能力,快速上手一个新技术的能力非常重要,希望本文能够给你带来一些启发。

更多详细内容参见 github 项目说明,更多高级用法可以下载源码去看下单元测试,也可以根据源码自行探索。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号