当前位置: 首页 > article >正文

JUnit5用户手册~并行执行

两种运行模式

SAME_THREAD: 默认的,测试方法在同一个线程
CONCURRENT: 并行执行,除非有资源锁

junit-platform.properties 配置参数

配置所有测试方法都并行

junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.mode.default = concurrent
@Execution(CONCURRENT) 指定类或方法并行

配置top-level类并行,测试方法同一线程执行

junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.mode.default = same_thread
junit.jupiter.execution.parallel.mode.classes.default = concurrent

配置top-level类串行,测试方法并行

junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.mode.default = concurrent
junit.jupiter.execution.parallel.mode.classes.default = same_thread

 相关参数

属性

描述

支持的值默认值
junit.jupiter.execution.parallel.enabled
是否允许并行

true

false

false
junit.jupiter.execution.parallel.mode.default
test tree的默认执行模式
concurrent
same_thread
same_thread
junit.jupiter.execution.parallel.mode.classes.default
top-level类的默认执行模式
concurrent
same_thread
same_thread
junit.jupiter.execution.parallel.config.strategy
默认线程和最大线程数的策略
dynamic
fixed
custom
dynamic
junit.jupiter.execution.parallel.config.dyna mic.factor

 dynamic配置的系数

数值1
junit.jupiter.execution.parallel.config.fixed.parallelism
fixed配置的线程数数值无默认
junit.jupiter.execution.parallel.config.custom.class
custom配置的策略类无默认

2、同步

@Execution(CONCURRENT)
class SharedResourcesDemo {
	private Properties backup;
	
	@BeforeEach
	void backup() {
		backup = new Properties();
		backup.putAll(System.getProperties());
	}
	
	@AfterEach
	void restore() {
		System.setProperties(backup);
	}
	
	@Test
	@ResourceLock(value = SYSTEM_PROPERTIES, mode = READ)
	void customPropertyIsNotSetByDefault() {
		assertNull(System.getProperty("my.prop"));
	}
	
	@Test
	@ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE)
	void canSetCustomPropertyToApple() {
		System.setProperty("my.prop", "apple");
		assertEquals("apple", System.getProperty("my.prop"));
	}
	
	@Test
	@ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE)
	void canSetCustomPropertyToBanana() {
		System.setProperty("my.prop", "banana");
		assertEquals("banana", System.getProperty("my.prop"));
	}
}


http://www.kler.cn/a/5564.html

相关文章:

  • 全栈声明式可观测:KubeVela 开箱即用且灵活定制的云原生应用洞察
  • 蓝桥杯嵌入式--实战模拟题
  • vue获取数据的两种方式实践+简单骨架屏实现
  • 《花雕学AI》05:令人惊奇的ChatGPT,一个能够与人类对话的人工智能
  • [Java] synchronized的锁优化机制
  • Java 8 - Lambda 表达式
  • 【gitlab部署】centos8安装gitlab(搭建属于自己的代码服务器)
  • 小驰私房菜_09_应用集成Raw域算法流程
  • 我的天哪, 什么是SOA架构
  • 数据库+加密算法参考材料-2023.3.29
  • 【Linux】进程控制(创建、终止、等待)
  • Android FrameWork——SystemServer
  • 提高java反射效率
  • 网络编程socket(下)
  • 非科班应届生培训Java能就业吗?
  • GPT-4老板:AI可能会杀死人类,已经出现我们无法解释的推理能力
  • 正则表达式
  • 如何同时处理多个聊天
  • 第03章 用户与权限管理
  • 用python如何实现智能合约?