Java 格雷德尔和;Junit5基于标记的Gradle任务不';使用&;表达

Java 格雷德尔和;Junit5基于标记的Gradle任务不';使用&;表达,java,gradle,junit5,junit-jupiter,Java,Gradle,Junit5,Junit Jupiter,我使用下一个梯度任务配置 task pipelineTest(type: Test) { Test task -> task.useJUnitPlatform { org.gradle.api.tasks.testing.junitplatform.JUnitPlatformOptions options -> options.includeTags 'integration-test & fast' } 我希望将执行同时具有IntegrationTest和fast

我使用下一个梯度任务配置

task pipelineTest(type: Test) { Test task ->
task.useJUnitPlatform { org.gradle.api.tasks.testing.junitplatform.JUnitPlatformOptions options ->
    options.includeTags 'integration-test & fast'
}
我希望将执行同时具有IntegrationTest和fast标记的测试

但我的构建失败了 堆栈跟踪

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not complete execution for Gradle Test Executor 6.
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)
    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.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy1.stop(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:123)
    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.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
    at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.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)
Caused by: org.junit.platform.commons.util.PreconditionViolationException: Tag name [integration-test & fast] must be syntactically valid
    at org.junit.platform.commons.util.Preconditions.condition(Preconditions.java:295)
    at org.junit.platform.engine.TestTag.<init>(TestTag.java:120)
    at org.junit.platform.engine.TestTag.create(TestTag.java:116)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
    at org.junit.platform.launcher.TagFilter.toTestTags(TagFilter.java:125)
    at org.junit.platform.launcher.TagFilter.includeTags(TagFilter.java:79)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.addTagsFilter(JUnitPlatformTestClassProcessor.java:134)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.createLauncherDiscoveryRequest(JUnitPlatformTestClassProcessor.java:118)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.access$800(JUnitPlatformTestClassProcessor.java:54)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:92)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$100(JUnitPlatformTestClassProcessor.java:77)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:73)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException:无法完成gradle测试执行器6的执行。
位于org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
位于org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
位于org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
位于org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
位于com.sun.proxy.$Proxy1.stop(未知源)
位于org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:123)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
位于org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
位于org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
位于org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
位于org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
位于org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
位于org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
位于org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
运行(Thread.java:748)
原因:org.junit.platform.commons.util.PremissionViolationException:标记名[integration test&fast]必须在语法上有效
位于org.junit.platform.commons.util.premissions.condition(premissions.java:295)
位于org.junit.platform.engine.TestTag(TestTag.java:120)
位于org.junit.platform.engine.TestTag.create(TestTag.java:116)
位于java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
位于java.util.ArrayList$ArrayListSpliterator.ForEachLeving(ArrayList.java:1382)
位于java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
位于java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
位于java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
位于java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
位于java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
位于org.junit.platform.launcher.TagFilter.toTestTags(TagFilter.java:125)
位于org.junit.platform.launcher.TagFilter.includeTags(TagFilter.java:79)
位于org.gradle.api.internal.tasks.testing.junitplatflatform.JUnitPlatformTestClassProcessor.addTagsFilter(JUnitPlatformTestClassProcessor.java:134)
位于org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.createLauncherDiscoveryRequest(JUnitPlatformTestClassProcessor.java:118)
位于org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.access$800(JUnitPlatformTestClassProcessor.java:54)
位于org.gradle.api.internal.tasks.testing.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:92)
位于org.gradle.api.internal.tasks.testing.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$100(JUnitPlatformTestClassProcessor.java:77)
位于org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:73)
位于org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)

您应该将它们作为单独的、以逗号分隔的字符串传递:

options.includeTags 'integration-test', 'fast'

堆栈跟踪中出现以下内容告诉我,您使用的JUnit 5版本不支持标记表达式(即,
x&y


因此,如果您想使用标记表达式,则需要升级到JUnit 5.1或更高版本。

堆栈跟踪显示:标记名[integration test&bla]必须在语法上有效。你确定“bla”是你想要的吗?对不起,这是一个旧堆栈跟踪。Sam Brannen修复了您的问题?它将运行所有带有集成测试和fast标记的测试。但我对运行同时带有“集成测试”和“快速”标记的测试感兴趣。官方文件也说这是可能的
at org.junit.platform.launcher.TagFilter.toTestTags(TagFilter.java:125)