JUnit5用户手册~并行执行

文章介绍了Junit平台的并行执行模式,包括SAME_THREAD和CONCURRENT,以及如何通过配置文件和注解来控制测试类和方法的执行顺序。同时,文章还展示了如何使用@Execution(CONCURRENT)注解和@ResourceLock进行资源同步,确保在并发测试中对系统属性的正确访问。
摘要由CSDN通过智能技术生成

两种运行模式

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"));
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于JUnit 4,要实现并行执行单元测试可以使用JUnit Vintage引擎和JUnit Platform引擎配合使用。具体的配置是通过`@RunWith(ParallelSuite.class)`注解来实现的。在JUnit 4中,并行执行单元测试是通过在不同线程中执行测试方法来实现的,每个线程执行一个测试类的测试方法。 在JUnit 4中,并行执行单元测试是通过JUnit Vintage引擎和JUnit Platform引擎配合使用实现的。具体的配置是在JUnit Vintage引擎的运行时参数中设置并发相关的配置,例如`junit.jupiter.execution.parallel.enabled = true`和`junit.jupiter.execution.parallel.mode.default = concurrent`。 需要注意的是,并行执行单元测试可能导致测试之间的相互影响和冲突,因此在设计测试用例时需要避免测试之间的依赖和共享状态。另外,由于并行执行测试会增加系统资源的消耗,需要根据具体情况来决定是否启用并行执行单元测试。 引用自:<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Junit5并行执行](https://blog.csdn.net/m0_37607945/article/details/107005841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值