写点什么

软件测试学习笔记丨 JUnit5 并行策略

作者:测试人
  • 2024-07-02
    北京
  • 本文字数:1730 字

    阅读完需:约 6 分钟

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/28209

并行策略配置

  • JUnit 提供了两种实现(动态和固定)和一个自定义选项

  • junit.jupiter.execution.parallel.config.strategy 的值设为并行策略配置参数中的一种即可。

  • 如果没有进行策略的相关配置,并行化策略默认为 dynamic

并行策略配置参数

  • 并发策略的配置参数有 3 种:dynamic、fixed、custom

  • 前两种 dynamic 和 fixed 是 JUnit 平台提供的 开箱即用 的实现。

  • custom 策略是通过自定义的模式来配置并行的线程池数量。

dynamic

  • 动态策略;默认选项

junit.jupiter.execution.parallel.config.strategy = dynamic
复制代码
  • 所需的并行数 根据 ++处理器/内核的数量++ 乘以 ++使用指定的因子参数++(默认为 1)确定线程数。

  • 并发线程数为 可用处理器/核的数量 * 系数

  • 系数设置 dynamic 对应的系数配置项为:junit.jupiter.execution.parallel.config.dynamic.factor 系数默认值为 1

fixed

  • 固定策略

junit.jupiter.execution.parallel.config.strategy = fixed
复制代码
  • 所需的并行数 固定策略依赖于预定义的线程数

  • 并发线程数为 设置的 junit.jupiter.execution.parallel.config.fixed.parallelism 的 value 值

测试类并行,测试方法并行

junit.jupiter.execution.parallel.mode.default = concurrentjunit.jupiter.execution.parallel.mode.classes.default=concurrent
复制代码

固定策略

junit.jupiter.execution.parallel.config.strategy = fixedjunit.jupiter.execution.parallel.config.fixed.parallelism=2
复制代码

custom

  • 自定义策略

  • 通过实现 ParallelExecutionConfigurationStrategy 接口来配置并行的线程池数量。

junit.jupiter.execution.parallel.config.strategy = custom
复制代码
  • 所需的并行数使用 ParallelExecutionConfigurationStrategy 接口实现。

custom

  • 自定义策略

  • 通过实现 ParallelExecutionConfigurationStrategy 接口来配置并行的线程池数量。

junit.jupiter.execution.parallel.config.strategy = custom
复制代码
  • 所需的并行数使用 ParallelExecutionConfigurationStrategy 接口实现。

package com.junit5;
import org.junit.platform.commons.JUnitException;import org.junit.platform.engine.ConfigurationParameters;import org.junit.platform.engine.support.hierarchical.ParallelExecutionConfiguration;import org.junit.platform.engine.support.hierarchical.ParallelExecutionConfigurationStrategy;
public class MyCustomStratgy implements ParallelExecutionConfigurationStrategy { @Override public ParallelExecutionConfiguration createConfiguration(ConfigurationParameters configurationParameters) { int count = configurationParameters.get("custom.parallelism", Integer::valueOf) .orElseThrow(() -> { return new JUnitException(String.format("Configuration parameter '%s' must be set", "fixed.parallelism")); }); return new ParallelExecutionConfiguration() { @Override public int getParallelism() { return count; }
@Override public int getMinimumRunnable() { return count; }
@Override public int getMaxPoolSize() { return count; }
@Override public int getCorePoolSize() { return count; }
@Override public int getKeepAliveSeconds() { return count; } }; }}
复制代码

测试类并行,测试方法并行

junit.jupiter.execution.parallel.mode.default = concurrentjunit.jupiter.execution.parallel.mode.classes.default=concurrent
复制代码

自定义策略

junit.jupiter.execution.parallel.config.strategy = customjunit.jupiter.execution.parallel.config.custom.class = com.junit5.MyCustomStratgyjunit.jupiter.execution.parallel.config.custom.parallelism = 3
复制代码



软件测试开发免费视频教程分享


发布于: 刚刚阅读数: 4
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试学习笔记丨JUnit5并行策略_软件测试_测试人_InfoQ写作社区