Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java junit中的交错并行测试启动?_Java_Multithreading_Maven_Junit - Fatal编程技术网

Java junit中的交错并行测试启动?

Java junit中的交错并行测试启动?,java,multithreading,maven,junit,Java,Multithreading,Maven,Junit,Conext:我有一个junit测试类,由Maven的failsafe集成测试插件运行,有几个测试可以有效地无限并行。他们面对的是一个已经部署的云平台,作为建立推广的门户。这些测试中的每一个在开始时都有一个快速的内存峰值,但随后的使用率非常低,它基本上会进行轮询,直到一个操作完成 我需要所有测试并行运行(因为它们在队列上施加负载,从而导致缩放操作,从而使作业运行更快),这在故障保护中很容易实现,但我还需要在开始时错开内存峰值,以便不会耗尽内存 我应该如何完成错开它们?当前的实现中有一个线程。sl

Conext:我有一个junit测试类,由Maven的failsafe集成测试插件运行,有几个测试可以有效地无限并行。他们面对的是一个已经部署的云平台,作为建立推广的门户。这些测试中的每一个在开始时都有一个快速的内存峰值,但随后的使用率非常低,它基本上会进行轮询,直到一个操作完成

我需要所有测试并行运行(因为它们在队列上施加负载,从而导致缩放操作,从而使作业运行更快),这在故障保护中很容易实现,但我还需要在开始时错开内存峰值,以便不会耗尽内存


我应该如何完成错开它们?当前的实现中有一个
线程。sleep(random)
,但是仍然有一个相当好的统计概率,即它们中有足够多的重叠会耗尽内存。我是否应该在测试类中放置一个
信号量
,并在
@Before
方法中等待它?使用自定义JUnit runner是否可以更轻松地实现这一点

为什么不从一个同步方法中获取导致内存峰值的数据?这样,每个测试将一次触发一个内存。

信号量方法对我来说似乎是个好主意,但您可能希望比在之前使用和之后使用更好的控制-例如,使信号量对测试类保持静态,在内存触发之前立即获取许可证,并在内存可GC时释放一个许可证。然后,您可以通过构建
信号量时可用的许可证数量来控制允许出现多少并发内存峰值。这肯定会奏效,但我不确定我是否需要(一次一个)如此严密地保护我的记忆。一次大概五个左右就好了?在任何情况下,都要有投票权,因为这会起作用。