kotlin Junit 的 pom.xml 文件失败,并显示“ClassSelector [className = 'InventoryTest'] 解析失败”

问题描述 投票:0回答:1

我正在尝试使用 JUnit 设置一些 kotlin 测试,但是当尝试运行测试时,我收到以下错误:

Internal Error occurred. org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover tests     at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:189)    at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:168)  at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)   at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)   at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)  at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)  at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)     at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.junit.platform.commons.JUnitException: ClassSelector [className = 'InventoryTest'] resolution failed    at org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener.selectorProcessed(AbortOnFailureLauncherDiscoveryListener.java:39)   at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:102)    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run(EngineDiscoveryRequestResolution.java:82)   at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.resolve(EngineDiscoveryRequestResolver.java:113)  at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:45)     at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69)   at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:181)    ... 8 more Caused by: java.lang.NoClassDefFoundError: org/junit/jupiter/api/DisplayNameGenerator$Simple     at org.junit.jupiter.engine.descriptor.DisplayNameUtils.<clinit>(DisplayNameUtils.java:54)  at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.<init>(ClassTestDescriptor.java:51)  at org.junit.jupiter.engine.discovery.ClassSelectorResolver.newClassTestDescriptor(ClassSelectorResolver.java:119)  at org.junit.jupiter.engine.discovery.ClassSelectorResolver.lambda$resolve$0(ClassSelectorResolver.java:71)     at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$DefaultContext.createAndAdd(EngineDiscoveryRequestResolution.java:246)  at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$DefaultContext.addToParent(EngineDiscoveryRequestResolution.java:209)   at org.junit.jupiter.engine.discovery.ClassSelectorResolver.resolve(ClassSelectorResolver.java:71)  at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.lambda$resolve$2(EngineDiscoveryRequestResolution.java:134)     at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212)  at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1686)   at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:144)   at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:574)    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:560)  at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)   at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)   at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)  at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:662)   at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:185)  at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:125)  at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:91)     ... 13 more Caused by: java.lang.ClassNotFoundException: org.junit.jupiter.api.DisplayNameGenerator$Simple  at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)  at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)   at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)  ... 33 more  

我的 maven pom.xml 文件:

<?xml version="1.0" encoding="UTF-8"?><project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion>
<artifactId>kotlin-sampleproject</artifactId> <groupId>org.example</groupId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>  <name>consoleApp</name>  <properties>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>     <kotlin.code.style>official</kotlin.code.style>     <kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>     <junit-jupiter.version>5.4.2</junit-jupiter.version> </properties>  <repositories>     <repository>         <id>mavenCentral</id>         <url>https://repo1.maven.org/maven2/</url>     </repository> </repositories>  <build>     <sourceDirectory>src/main/kotlin</sourceDirectory>     <testSourceDirectory>src/test/kotlin</testSourceDirectory>     <plugins>         <plugin>             <groupId>org.jetbrains.kotlin</groupId>             <artifactId>kotlin-maven-plugin</artifactId>             <version>1.8.21</version>             <executions>                 <execution>                     <id>compile</id>                     <phase>compile</phase>                     <goals>                         <goal>compile</goal>                     </goals>                 </execution>                 <execution>                     <id>test-compile</id>                     <phase>test-compile</phase>                     <goals>                         <goal>test-compile</goal>                     </goals>                 </execution>             </executions>         </plugin>         <plugin>             <artifactId>maven-surefire-plugin</artifactId>             <version>2.12.4</version>         </plugin>         <plugin>             <artifactId>maven-failsafe-plugin</artifactId>             <version>3.2.5</version>         </plugin>         <plugin>             <groupId>org.codehaus.mojo</groupId>             <artifactId>exec-maven-plugin</artifactId>             <version>1.6.0</version>             <configuration>                 <mainClass>MainKt</mainClass>             </configuration>         </plugin>     </plugins> </build>  <dependencies>     <dependency>         <groupId>org.jetbrains.kotlin</groupId>         <artifactId>kotlin-test-junit5</artifactId>         <version>1.8.21</version>         <scope>test</scope>     </dependency>     <dependency>         <groupId>org.junit.jupiter</groupId>         <artifactId>junit-jupiter-engine</artifactId>         <version>5.7.0</version>         <scope>test</scope>     </dependency>     <dependency>         <groupId>org.jetbrains.kotlin</groupId>         <artifactId>kotlin-stdlib-jdk8</artifactId>         <version>1.8.21</version>     </dependency> </dependencies>

这些是我在测试类中的导入语句:

import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

有人知道如何解决这个问题吗?我的猜测是,我使用了错误的依赖项,我做了一些研究,发现并没有真正解决我的问题。

kotlin maven intellij-idea junit
1个回答
0
投票

几张票带有“内部错误”。

您可以尝试在最新的 Intellij IDEA 版本以及最新的 Kotlin 编译器版本和依赖版本中重现该问题。

如果问题仍然存在,您能否通过 YouTrack 创建有关该问题的票证?

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.