Testng 和 Junit5 多线程并发测试对比
一、前言
最近测试一个开源项目,发现生成的
全局id
有重复,也没有单元测试,就准备贡献个PR
想到多线程并发测试,根据经验,第一想法是用 Testng,后面看了下 Junit5 也有实验性支持了,就对比下(以
maven
为例)spock 不太适合这种场景
二、Testng
1. 安装
选择 使用数 比较多、也比较新 的版本,7.7.1。<testng.version>7.7.1</testng.version>
多模块项目,可以在 根 pom.xml 里面添加依赖,避免每个模块都增加配置哦
2. 使用
同一个测试对象,ids 属性 不用加 static
3. 效果
三、Junit5
1. 安装
选择 使用数 比较多、也比较新 的版本,5.8.2。<junit-jupiter.version>5.8.2</junit-jupiter.version>
最好通过 dependencyManagement 来统一版本,尤其是 多模块项目
建议放到 spring-boot-dependencies 前面,优先级更高
多模块项目,可以在 根 pom.xml 里面添加依赖,避免每个模块都增加配置哦
2 配置项
先设置 junit.jupiter.execution.parallel.enabled=true
全局并发测试:junit.jupiter.execution.parallel.mode.default=concurrent
局部并发测试:@RepeatedTest 和 @Execution(CONCURRENT)
按需配置并行策略 strategy,建议 fixed,线程数 可控
fixed 配置:如 fixed.parallelism=3,fixed.max-pool-size=3(默认 256 + parallelism)
dynamic策略(根据 factor、CPU核数 调整parallelism),parallelism = max(1, factor * CPU核数),后面和 fixed 逻辑一样
3 配置方式
System properties 配置方式,更适合多模块项目(根 pom.xml 配置,子模块就不用配置了)
配置文件test/resources 目录下,增加 junit-platform.properties 文件,内容如下:
4. 使用
测试对象 不同,ids 属性 需加 static
5. 效果
四、总结
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明,否则将追究法律责任。
本文首先发布于 https://www.890808.xyz/ ,其他平台需要审核更新慢一些。
版权声明: 本文为 InfoQ 作者【javalover123】的原创文章。
原文链接:【http://xie.infoq.cn/article/f78a072a7bc21f7fdce481c6d】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论