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

warning: unknown enum constant Status.STABLE

为了解决 and somehow that,我试图创建包来细分 maintest 类 然后使用编译器添加执行单元测试的模块。不是一个很好的方式同意,但现在只是一个假设的结构。

随着我的深入,很少有未解决的问题是:-

问。请注意,它会将 opentest4j-1.0.0.jar 带到 lib/ 文件夹中。为什么会这样,另一个罐子是做什么用的?

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

:-

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

Libraries/Tools 如果这可能很重要,则使用:-

问。这种警告的可能原因是什么?此外,我无法在我的项目中和项目外找到 API.Status 类。

1) opentest4j

opentest4jjunit-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

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'
}

但总的来说,依赖是独立于构建工具的,所以你可以在没有 Gradle 的情况下直接 IDE ]Maven.

编译警告可以忽略。此外,从 5.1.0 版本(目前正在开发中)开始,它将不再出现。全部在Release Notes:

中解释

In 5.0.1, all artifacts were changed to have an optional instead of a mandatory dependency on the @API Guardian JAR in their published Maven POMs. However, although the Java compiler should ignore missing annotation types, a lot of users have reported that compiling tests without having the @API Guardian JAR on the classpath results in warnings emitted by javac that look like this:

warning: unknown enum constant Status.STABLE
reason: class file for org.apiguardian.api.API$Status not found

To avoid confusion, the JUnit team has decided to make the dependency to the @API Guardian JAR mandatory again.

参考另见: