junit 5 - 无法一次运行多个发现

问题描述

我的团队开发了一个用于 junit 测试的自定义运行器。 现在我正在努力提高它的性能并尝试同时创建几个测试计划。 老实说,在这一步我什至不打算执行它。我唯一需要的是获取完整的 TestIdentifiers 列表,以便在 UI 中进一步过滤。

在同一个线程上工作时一切正常。

所以我有一种发现测试用例的方法

    private CompletableFuture<List<TestCasesDetails>> discover(boolean mode) {
        return CompletableFuture.supplyAsync(() -> {
            TestPlan testPlan = testPlanGenerator.createTestPlan(
                    jardiscoverService.discover(mode)
            );
            try {
                return testCaseMapper.getMappedTestCasesList(mode,testPlan);
            } catch (ClassNotFoundException e) {
                throw new NotFoundException("Wrong tag or tests not found");
            }
        });
    }

createTestPlan 在哪里:

    public TestPlan createTestPlan(LauncherdiscoveryRequest request) {
        Launcher launcher = LauncherFactory.create ();
        return launcher.discover (request);
    }

jardiscoverService.discover 触发了一些业务逻辑,但最终构建了 LauncherdiscoveryRequest:

         LauncherdiscoveryRequestBuilder.request()
                .selectors(discoverySelectorList)
                .filters(
                        excludeEngines("..."),executionMode ? includeTags("...") : excludeTags("...")
                )
                .filters(filterTags)
                .configurationParameters(...)
                .build();

运行时得到:

java.nio.file.FileSystemAlreadyExistsException: null
    at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:104) ~[jdk.zipfs:na]
    at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:335) ~[na:na]
    at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:284) ~[na:na]
    at org.junit.platform.commons.util.CloseablePath.createForJarFileSystem(CloseablePath.java:57) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.commons.util.CloseablePath.create(CloseablePath.java:46) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.commons.util.ClasspathScanner.findClassesForUri(ClasspathScanner.java:102) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.commons.util.ClasspathScanner.lambda$findClassesForUris$0(ClasspathScanner.java:94) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.wrapAndcopyInto(AbstractPipeline.java:474) ~[na:na]
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]
    at org.junit.platform.commons.util.ClasspathScanner.findClassesForUris(ClasspathScanner.java:97) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.commons.util.ClasspathScanner.scanForClassesInPackage(ClasspathScanner.java:78) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.commons.util.ReflectionUtils.findAllClassesInPackage(ReflectionUtils.java:981) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.commons.util.ReflectionUtils.findAllClassesInPackage(ReflectionUtils.java:974) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.commons.support.ReflectionSupport.findAllClassesInPackage(ReflectionSupport.java:138) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.engine.support.discovery.ClassContainerSelectorResolver.resolve(ClassContainerSelectorResolver.java:53) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.engine.support.discovery.EnginediscoveryRequestResolution.lambda$resolve$2(EnginediscoveryRequestResolution.java:155) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
    at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602) ~[na:na]
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.wrapAndcopyInto(AbstractPipeline.java:474) ~[na:na]
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) ~[na:na]
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543) ~[na:na]
    at org.junit.platform.engine.support.discovery.EnginediscoveryRequestResolution.resolve(EnginediscoveryRequestResolution.java:185) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.engine.support.discovery.EnginediscoveryRequestResolution.resolve(EnginediscoveryRequestResolution.java:125) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.engine.support.discovery.EnginediscoveryRequestResolution.resolveCompletely(EnginediscoveryRequestResolution.java:91) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.engine.support.discovery.EnginediscoveryRequestResolution.run(EnginediscoveryRequestResolution.java:82) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.engine.support.discovery.EnginediscoveryRequestResolver.resolve(EnginediscoveryRequestResolver.java:113) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.jupiter.engine.discovery.discoverySelectorResolver.resolveSelectors(discoverySelectorResolver.java:45) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.launcher.core.Enginediscoveryorchestrator.discoverEngineRoot(Enginediscoveryorchestrator.java:96) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.launcher.core.Enginediscoveryorchestrator.discover(Enginediscoveryorchestrator.java:81) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:83) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]
    at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:58) ~[junit-platform-console-standalone-1.7.0-M1.jar:1.7.0-M1]

@user:6327046 marc Philipp,很高兴收到您或junit 团队成员的来信:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)