警告:未知的枚举常量Status.STABLE

Nam*_*man 8 java unit-testing java-9 junit5 intellij-idea2017

在寻求解决这个,不知怎么,我尝试创建包细分maintest类,然后,以与添加的模块使用编译器来执行单元测试.不是很好的方式,但现在只是一个假设的结构.

在此输入图像描述

随着我的进一步发展,几个未解决的问题是: -

  • 将基于JDK9的模块添加到项目中.
  • 使用IntelliJ的快捷方式将JUnit5添加到类路径中.(lib文件夹)[ junit-jupiter-api-5.0.0.jar]

问:请注意,它带来opentest4j-1.0.0.jar了lib /文件夹.为什么会这样,用于其他jar的是什么?

warning: unknown enum constant Status.STABLE   
  reason: class file for org.apiguardian.api.API$Status not found 
warning: unknown enum constant Status.STABLE 
2 warnings
Run Code Online (Sandbox Code Playgroud)

注意: -

我发现使用junit-jupiter可疑因为如果我使用JUnit注释掉代码并执行相同的命令,事情似乎工作得很好.

如果可能重要的话,使用的库/工具: -

  • junit-jupiter-api-5.0.0
  • Java版本 "9" (build 9+181)
  • 的IntelliJ 2017.2.5

问:这样的警告可能是什么原因?而且,我无法API.Status在我的项目中和项目类之外找到它.

Unc*_*ter 7

编译警告可以简单地忽略。而且,从版本(目前正在开发中)开始,它不会再出现5.1.0发行说明中对此进行了全部解释:

在 5.0.1 中,所有工件都已更改为在其发布的 Maven POM 中对@API Guardian JAR 具有可选依赖,而不是强制依赖项。然而,尽管 Java 编译器应该忽略缺失的注释类型,但许多用户报告说,在类路径上没有@API Guardian JAR 的情况下编译测试会导致发出如下所示的警告: javac

warning: unknown enum constant Status.STABLE
reason: class file for org.apiguardian.api.API$Status not found
Run Code Online (Sandbox Code Playgroud)

为了避免混淆,JUnit 团队决定再次强制依赖@API Guardian JAR 。

作为参考,另请参阅:


Vít*_*čka 5

1)开放测试4j

opentest4j是 的传递依赖junit-jupiter-api。查看依赖关系图:

+--- org.junit.jupiter:junit-jupiter-api:5.0.1
     +--- org.opentest4j:opentest4j:1.0.0
     \--- org.junit.platform:junit-platform-commons:1.0.1
Run Code Online (Sandbox Code Playgroud)

2) 未知的枚举常量 Status.STABLE

您需要添加以下依赖项:apiguardian-api

例如在Gradle中,您可以通过以下方式完成:

dependencies {
    testCompile 'org.junit.jupiter:junit-jupiter-api:5.0.1'
    testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.0.1'
    testCompileOnly 'org.apiguardian:apiguardian-api:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

但总的来说,依赖关系是独立于构建工具的,因此您可以在普通的 IDE 中完成它,而无需GradleMaven