IntelliJ + JUnit 5 (Jupiter)

匿名 (未验证) 提交于 2019-12-03 09:05:37

问题:

My build.gradle has:

testCompile 'org.junit.jupiter:junit-jupiter-api:5.0.0' 

Using the standard example from http://junit.org/junit5/docs/current/user-guide/

import static org.junit.jupiter.api.Assertions.assertEquals;  import org.junit.jupiter.api.Test;  class FirstJUnit5Tests {     @Test     void myFirstTest() {         assertEquals(2, 1 + 1);     } } 

When I try to run as a JUnit test in IntelliJ 2017.2.3, I get:

objc[32347]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java (0x10f5be4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10f6864e0). One of the two will be used. Which one is undefined. Sep 11, 2017 12:39:04 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests java.lang.NoSuchMethodError: org.junit.platform.commons.util.ClassUtils.isKotlinClass(Ljava/lang/Class;)Z     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$getTestInstanceLifecycle$14(ClassTestDescriptor.java:299)     at java.util.Optional.orElseGet(Optional.java:267)     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.getTestInstanceLifecycle(ClassTestDescriptor.java:299)     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.<init>(ClassTestDescriptor.java:87)     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.<init>(ClassTestDescriptor.java:77)     at org.junit.jupiter.engine.discovery.TestContainerResolver.resolveClass(TestContainerResolver.java:100)     at org.junit.jupiter.engine.discovery.TestContainerResolver.resolveElement(TestContainerResolver.java:45)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.tryToResolveWithResolver(JavaElementsResolver.java:169)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.lambda$resolve$8(JavaElementsResolver.java:156)     at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)     at java.util.Iterator.forEachRemaining(Iterator.java:116)     at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)     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.jupiter.engine.discovery.JavaElementsResolver.resolve(JavaElementsResolver.java:159)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.lambda$resolveForAllParents$4(JavaElementsResolver.java:130)     at java.util.Collections$SingletonSet.forEach(Collections.java:4767)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveForAllParents(JavaElementsResolver.java:130)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveContainerWithParents(JavaElementsResolver.java:80)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveClass(JavaElementsResolver.java:55)     at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.lambda$resolveSelectors$2(DiscoverySelectorResolver.java:59)     at java.util.ArrayList.forEach(ArrayList.java:1249)     at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:58)     at org.junit.jupiter.engine.JupiterTestEngine.resolveDiscoveryRequest(JupiterTestEngine.java:68)     at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:61)     at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:130)     at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:117)     at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:82)     at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:48)     at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)     at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)     at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)  Sep 11, 2017 12:39:04 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests java.lang.NoSuchMethodError: org.junit.platform.commons.util.ClassUtils.isKotlinClass(Ljava/lang/Class;)Z     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$getTestInstanceLifecycle$14(ClassTestDescriptor.java:299)     at java.util.Optional.orElseGet(Optional.java:267)     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.getTestInstanceLifecycle(ClassTestDescriptor.java:299)     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.<init>(ClassTestDescriptor.java:87)     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.<init>(ClassTestDescriptor.java:77)     at org.junit.jupiter.engine.discovery.TestContainerResolver.resolveClass(TestContainerResolver.java:100)     at org.junit.jupiter.engine.discovery.TestContainerResolver.resolveElement(TestContainerResolver.java:45)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.tryToResolveWithResolver(JavaElementsResolver.java:169)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.lambda$resolve$8(JavaElementsResolver.java:156)     at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)     at java.util.Iterator.forEachRemaining(Iterator.java:116)     at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)     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.jupiter.engine.discovery.JavaElementsResolver.resolve(JavaElementsResolver.java:159)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.lambda$resolveForAllParents$4(JavaElementsResolver.java:130)     at java.util.Collections$SingletonSet.forEach(Collections.java:4767)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveForAllParents(JavaElementsResolver.java:130)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveContainerWithParents(JavaElementsResolver.java:80)     at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveClass(JavaElementsResolver.java:55)     at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.lambda$resolveSelectors$2(DiscoverySelectorResolver.java:59)     at java.util.ArrayList.forEach(ArrayList.java:1249)     at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:58)     at org.junit.jupiter.engine.JupiterTestEngine.resolveDiscoveryRequest(JupiterTestEngine.java:68)     at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:61)     at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:130)     at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:117)     at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)     at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:62)     at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)     at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)     at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)   Process finished with exit code 0 Empty test suite. 

I'm not using Kotlin at all, so I find those warnings + stack traces odd. Secondly, it isn't running the test. Any ideas?

回答1:

IDEA version 2017.2.3 and older shipped with an outdated version of JUnit 5.

Use this to solve that issue until 5.0 GA is bundled in IDEA

// Only needed to run tests in an IntelliJ IDEA that bundles an older version testRuntime("org.junit.platform:junit-platform-launcher:1.0.0") testRuntime("org.junit.jupiter:junit-jupiter-engine:5.0.0") testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0") 

See http://junit.org/junit5/docs/current/user-guide/#running-tests-ide-intellij-idea for details.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!