gradle 和 junit 的间歇性并发故障
intermittent concurrent failues with gradle and junit
我用 Gradle 创建了一个 JUnit 测试 class 和 运行 它,生活很美好。
我在另一个包中创建了另一个 JUnit 测试 class,运行 相同的 Gradle 命令,现在情况变得更糟了。更糟糕的是,它断断续续地更糟。
有时,事情会奏效:
$ gradle clean cleanTest test
> Task :product:java:common:test
package1.DataSourceDetailsUtilsTest > onlyOverrides() PASSED
package1.DataSourceDetailsUtilsTest > onlyDefaults() PASSED
package1.DataSourceDetailsUtilsTest > onlyTenant() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test1() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test2() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test3() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test4() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test5() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test6() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test7() PASSED
BUILD SUCCESSFUL in 3s
21 actionable tasks: 5 executed, 16 up-to-date
即便如此,请注意左侧始终是 package1.DataSourceDetailsUtilsTest
,即使这只是测试的其中之一 classes。
有时测试会失败:
> Task :product:java:common:test FAILED
package1.DataSourceDetailsUtilsTest > onlyOverrides() PASSED
package1.DataSourceDetailsUtilsTest > onlyDefaults() PASSED
package1.DataSourceDetailsUtilsTest > onlyTenant() PASSED
package2.UUIDServiceTests > initializationError FAILED
java.lang.AssertionError
4 tests completed, 1 failed
FAILURE: Build failed with an exception.
请注意左侧如何正确地从 package1.DataSourceDetailsUtilsTest
变为 package2.UUIDServiceTests
。这是我所期望的。 AssertionError 粘贴在此 post.
的底部
有时测试失败的方式不同:
> Task :product:java:common:test FAILED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test1() PASSED
package1.DataSourceDetailsUtilsTest > onlyTenant() PASSED
package1.DataSourceDetailsUtilsTest > onlyOverrides() PASSED
package1.DataSourceDetailsUtilsTest > onlyDefaults() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test2() SKIPPED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test3() SKIPPED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test4() SKIPPED
Received a completed event for test with unknown id '40.9'. Registered test ids: '[:product:java:common:test, 40.1]'
java.lang.IllegalArgumentException: Received a completed event for test with unknown id '40.9'. Registered test ids: '[:product:java:common:test, 40.1]'
at org.gradle.api.internal.tasks.testing.results.StateTrackingTestResultProcessor.completed(StateTrackingTestResultProcessor.java:79)
at org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor.completed(AttachParentTestResultProcessor.java:56)
at sun.reflect.GeneratedMethodAccessor284.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.FailureHandlingDispatch.dispatch(FailureHandlingDispatch.java:29)
at org.gradle.internal.dispatch.AsyncDispatch.dispatchMessages(AsyncDispatch.java:133)
at org.gradle.internal.dispatch.AsyncDispatch.access[=13=]0(AsyncDispatch.java:34)
at org.gradle.internal.dispatch.AsyncDispatch.run(AsyncDispatch.java:73)
at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:42)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Received a completed event for test with unknown id '40.7'. Registered test ids: '[:product:java:common:test, 40.1]'
java.lang.IllegalArgumentException: Received a completed event for test with unknown id '40.7'. Registered test ids: '[:product:java:common:test, 40.1]'
at org.gradle.api.internal.tasks.testing.results.StateTrackingTestResultProcessor.completed(StateTrackingTestResultProcessor.java:79)
at org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor.completed(AttachParentTestResultProcessor.java:56)
at sun.reflect.GeneratedMethodAccessor284.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.FailureHandlingDispatch.dispatch(FailureHandlingDispatch.java:29)
at org.gradle.internal.dispatch.AsyncDispatch.dispatchMessages(AsyncDispatch.java:133)
at org.gradle.internal.dispatch.AsyncDispatch.access[=13=]0(AsyncDispatch.java:34)
at org.gradle.internal.dispatch.AsyncDispatch.run(AsyncDispatch.java:73)
at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:42)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
package2.UUIDServiceTests > initializationError FAILED
java.lang.AssertionError
Caused by: java.lang.AssertionError
8 tests completed, 1 failed, 3 skipped
再次注意左侧是 package1.DataSourceDetailsUtilsTest
,尽管从 package2.UUIDServiceTests
到 运行 的第一个测试。
这种情况并不少见。大约 40% 的时间他们通过,大约 40% 的时间他们以第一种方式失败,大约 20% 的时间他们以第二种方式失败
测试class非常简单。只有带有 @Test
注释的 void 方法。没有设置或拆卸。为了确保这不是我在做的任何事情,我从字面上将每个测试更改为睡眠 1 秒:Thread.sleep(1000);
并且我仍然能够重现该问题。当只有一个测试 class 时,它似乎总是有效(即,如果我注释掉其中一个 classes)
经过更多的研究,我确实有 junit.jupiter.execution.parallel.enabled=true
,如果我将其更改为 false
,那么事情又会起作用,所以我假设 Gradle 在并发方面做得很糟糕.
不支持吗?
第一个失败场景的 AssertionError:
java.lang.AssertionError
at org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor.started(AttachParentTestResultProcessor.java:33)
at org.gradle.api.internal.tasks.testing.junit.TestClassExecutionEventGenerator.started(TestClassExecutionEventGenerator.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.actor.internal.DefaultActorFactory$BlockingActor.dispatch(DefaultActorFactory.java:122)
at org.gradle.internal.actor.internal.DefaultActorFactory$BlockingActor.dispatch(DefaultActorFactory.java:97)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.started(Unknown Source)
at org.gradle.api.internal.tasks.testing.junit.GenericJUnitTestEventAdapter.testStarted(GenericJUnitTestEventAdapter.java:54)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestExecutionListener.executionStarted(JUnitPlatformTestExecutionListener.java:78)
at org.junit.platform.launcher.core.TestExecutionListenerRegistry$CompositeTestExecutionListener.lambda$executionStarted(TestExecutionListenerRegistry.java:72)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at org.junit.platform.launcher.core.TestExecutionListenerRegistry.notifyTestExecutionListeners(TestExecutionListenerRegistry.java:51)
at org.junit.platform.launcher.core.TestExecutionListenerRegistry.access0(TestExecutionListenerRegistry.java:27)
at org.junit.platform.launcher.core.TestExecutionListenerRegistry$CompositeTestExecutionListener.executionStarted(TestExecutionListenerRegistry.java:72)
at org.junit.platform.launcher.core.ExecutionListenerAdapter.executionStarted(ExecutionListenerAdapter.java:46)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:92)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:71)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:169)
at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:389)
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:719)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.joinConcurrentTasksInReverseOrderToEnableWorkStealing(ForkJoinPoolHierarchicalTestExecutorService.java:146)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:120)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:110)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:71)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:169)
at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:389)
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:719)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.joinConcurrentTasksInReverseOrderToEnableWorkStealing(ForkJoinPoolHierarchicalTestExecutorService.java:146)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:120)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:110)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:71)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:169)
at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
使用 gradle 的 junit5 并行测试执行似乎失败了,并且有一个 ticket fot。
我用 Gradle 创建了一个 JUnit 测试 class 和 运行 它,生活很美好。
我在另一个包中创建了另一个 JUnit 测试 class,运行 相同的 Gradle 命令,现在情况变得更糟了。更糟糕的是,它断断续续地更糟。
有时,事情会奏效:
$ gradle clean cleanTest test
> Task :product:java:common:test
package1.DataSourceDetailsUtilsTest > onlyOverrides() PASSED
package1.DataSourceDetailsUtilsTest > onlyDefaults() PASSED
package1.DataSourceDetailsUtilsTest > onlyTenant() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test1() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test2() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test3() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test4() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test5() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test6() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test7() PASSED
BUILD SUCCESSFUL in 3s
21 actionable tasks: 5 executed, 16 up-to-date
即便如此,请注意左侧始终是 package1.DataSourceDetailsUtilsTest
,即使这只是测试的其中之一 classes。
有时测试会失败:
> Task :product:java:common:test FAILED
package1.DataSourceDetailsUtilsTest > onlyOverrides() PASSED
package1.DataSourceDetailsUtilsTest > onlyDefaults() PASSED
package1.DataSourceDetailsUtilsTest > onlyTenant() PASSED
package2.UUIDServiceTests > initializationError FAILED
java.lang.AssertionError
4 tests completed, 1 failed
FAILURE: Build failed with an exception.
请注意左侧如何正确地从 package1.DataSourceDetailsUtilsTest
变为 package2.UUIDServiceTests
。这是我所期望的。 AssertionError 粘贴在此 post.
有时测试失败的方式不同:
> Task :product:java:common:test FAILED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test1() PASSED
package1.DataSourceDetailsUtilsTest > onlyTenant() PASSED
package1.DataSourceDetailsUtilsTest > onlyOverrides() PASSED
package1.DataSourceDetailsUtilsTest > onlyDefaults() PASSED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test2() SKIPPED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test3() SKIPPED
package1.DataSourceDetailsUtilsTest > package2.UUIDServiceTests.test4() SKIPPED
Received a completed event for test with unknown id '40.9'. Registered test ids: '[:product:java:common:test, 40.1]'
java.lang.IllegalArgumentException: Received a completed event for test with unknown id '40.9'. Registered test ids: '[:product:java:common:test, 40.1]'
at org.gradle.api.internal.tasks.testing.results.StateTrackingTestResultProcessor.completed(StateTrackingTestResultProcessor.java:79)
at org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor.completed(AttachParentTestResultProcessor.java:56)
at sun.reflect.GeneratedMethodAccessor284.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.FailureHandlingDispatch.dispatch(FailureHandlingDispatch.java:29)
at org.gradle.internal.dispatch.AsyncDispatch.dispatchMessages(AsyncDispatch.java:133)
at org.gradle.internal.dispatch.AsyncDispatch.access[=13=]0(AsyncDispatch.java:34)
at org.gradle.internal.dispatch.AsyncDispatch.run(AsyncDispatch.java:73)
at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:42)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Received a completed event for test with unknown id '40.7'. Registered test ids: '[:product:java:common:test, 40.1]'
java.lang.IllegalArgumentException: Received a completed event for test with unknown id '40.7'. Registered test ids: '[:product:java:common:test, 40.1]'
at org.gradle.api.internal.tasks.testing.results.StateTrackingTestResultProcessor.completed(StateTrackingTestResultProcessor.java:79)
at org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor.completed(AttachParentTestResultProcessor.java:56)
at sun.reflect.GeneratedMethodAccessor284.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.FailureHandlingDispatch.dispatch(FailureHandlingDispatch.java:29)
at org.gradle.internal.dispatch.AsyncDispatch.dispatchMessages(AsyncDispatch.java:133)
at org.gradle.internal.dispatch.AsyncDispatch.access[=13=]0(AsyncDispatch.java:34)
at org.gradle.internal.dispatch.AsyncDispatch.run(AsyncDispatch.java:73)
at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:42)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
package2.UUIDServiceTests > initializationError FAILED
java.lang.AssertionError
Caused by: java.lang.AssertionError
8 tests completed, 1 failed, 3 skipped
再次注意左侧是 package1.DataSourceDetailsUtilsTest
,尽管从 package2.UUIDServiceTests
到 运行 的第一个测试。
这种情况并不少见。大约 40% 的时间他们通过,大约 40% 的时间他们以第一种方式失败,大约 20% 的时间他们以第二种方式失败
测试class非常简单。只有带有 @Test
注释的 void 方法。没有设置或拆卸。为了确保这不是我在做的任何事情,我从字面上将每个测试更改为睡眠 1 秒:Thread.sleep(1000);
并且我仍然能够重现该问题。当只有一个测试 class 时,它似乎总是有效(即,如果我注释掉其中一个 classes)
经过更多的研究,我确实有 junit.jupiter.execution.parallel.enabled=true
,如果我将其更改为 false
,那么事情又会起作用,所以我假设 Gradle 在并发方面做得很糟糕.
不支持吗?
第一个失败场景的 AssertionError:
java.lang.AssertionError
at org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor.started(AttachParentTestResultProcessor.java:33)
at org.gradle.api.internal.tasks.testing.junit.TestClassExecutionEventGenerator.started(TestClassExecutionEventGenerator.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.actor.internal.DefaultActorFactory$BlockingActor.dispatch(DefaultActorFactory.java:122)
at org.gradle.internal.actor.internal.DefaultActorFactory$BlockingActor.dispatch(DefaultActorFactory.java:97)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.started(Unknown Source)
at org.gradle.api.internal.tasks.testing.junit.GenericJUnitTestEventAdapter.testStarted(GenericJUnitTestEventAdapter.java:54)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestExecutionListener.executionStarted(JUnitPlatformTestExecutionListener.java:78)
at org.junit.platform.launcher.core.TestExecutionListenerRegistry$CompositeTestExecutionListener.lambda$executionStarted(TestExecutionListenerRegistry.java:72)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at org.junit.platform.launcher.core.TestExecutionListenerRegistry.notifyTestExecutionListeners(TestExecutionListenerRegistry.java:51)
at org.junit.platform.launcher.core.TestExecutionListenerRegistry.access0(TestExecutionListenerRegistry.java:27)
at org.junit.platform.launcher.core.TestExecutionListenerRegistry$CompositeTestExecutionListener.executionStarted(TestExecutionListenerRegistry.java:72)
at org.junit.platform.launcher.core.ExecutionListenerAdapter.executionStarted(ExecutionListenerAdapter.java:46)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:92)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:71)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:169)
at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:389)
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:719)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.joinConcurrentTasksInReverseOrderToEnableWorkStealing(ForkJoinPoolHierarchicalTestExecutorService.java:146)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:120)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:110)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:71)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:169)
at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:389)
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:719)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.joinConcurrentTasksInReverseOrderToEnableWorkStealing(ForkJoinPoolHierarchicalTestExecutorService.java:146)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:120)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively(NodeTestTask.java:110)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:71)
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:169)
at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
使用 gradle 的 junit5 并行测试执行似乎失败了,并且有一个 ticket fot。