警告:未知枚举常量 Status.STABLE
warning: unknown enum constant Status.STABLE
为了解决 and somehow that,我试图创建包来细分 main
和 test
类 然后使用编译器添加执行单元测试的模块。不是一个很好的方式同意,但现在只是一个假设的结构。
随着我的深入,很少有未解决的问题是:-
- 将基于 JDK9 的模块添加到项目中。
- 使用 IntelliJ 的快捷方式将 JUnit5 添加到类路径中。 (库文件夹)[
junit-jupiter-api-5.0.0.jar
]
问。请注意,它会将 opentest4j-1.0.0.jar
带到 lib/ 文件夹中。为什么会这样,另一个罐子是做什么用的?
添加类并相应生成一些测试方法。
使用命令
编译sample project(分享只是为了画出正在使用的目录结构图)
javac --module-path lib -d "target" $(find src -name "*.java")
结果警告为 -
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 如果这可能很重要,则使用:-
junit-jupiter-api-5.0.0
与
- Java版本
"9" (build 9+181)
- IntelliJ
2017.2.5
问。这种警告的可能原因是什么?此外,我无法在我的项目中和项目外找到 API.Status
类。
1) opentest4j
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
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.
参考另见:
为了解决 main
和 test
类 然后使用编译器添加执行单元测试的模块。不是一个很好的方式同意,但现在只是一个假设的结构。
随着我的深入,很少有未解决的问题是:-
- 将基于 JDK9 的模块添加到项目中。
- 使用 IntelliJ 的快捷方式将 JUnit5 添加到类路径中。 (库文件夹)[
junit-jupiter-api-5.0.0.jar
]
问。请注意,它会将 opentest4j-1.0.0.jar
带到 lib/ 文件夹中。为什么会这样,另一个罐子是做什么用的?
添加类并相应生成一些测试方法。
使用命令
编译sample project(分享只是为了画出正在使用的目录结构图)javac --module-path lib -d "target" $(find src -name "*.java")
结果警告为 -
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 如果这可能很重要,则使用:-
junit-jupiter-api-5.0.0
与- Java版本
"9" (build 9+181)
- IntelliJ
2017.2.5
问。这种警告的可能原因是什么?此外,我无法在我的项目中和项目外找到 API.Status
类。
1) opentest4j
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
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.
参考另见: