Nam*_*man 8 java unit-testing java-9 junit5 intellij-idea2017
在寻求解决这个,不知怎么说,我尝试创建包细分main和test类,然后,以与添加的模块使用编译器来执行单元测试.不是很好的方式,但现在只是一个假设的结构.
随着我的进一步发展,几个未解决的问题是: -
junit-jupiter-api-5.0.0.jar]问:请注意,它带来opentest4j-1.0.0.jar了lib /文件夹.为什么会这样,用于其他jar的是什么?
添加类并相应地生成一些测试方法.
使用该命令编译示例项目(仅用于绘制正在使用的目录结构的图片)
javac --module-path lib -d "target" $(find src -name "*.java")
Run Code Online (Sandbox Code Playgroud)
结果警告为 -
Run Code Online (Sandbox Code Playgroud)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注释掉代码并执行相同的命令,事情似乎工作得很好.
如果可能重要的话,使用的库/工具: -
junit-jupiter-api-5.0.0 同 "9" (build 9+181)2017.2.5问:这样的警告可能是什么原因?而且,我无法API.Status在我的项目中和项目类之外找到它.
编译警告可以简单地忽略。而且,从版本(目前正在开发中)开始,它不会再出现5.1.0。发行说明中对此进行了全部解释:
在 5.0.1 中,所有工件都已更改为在其发布的 Maven POM 中对@API Guardian JAR 具有可选依赖项,而不是强制依赖项。然而,尽管 Java 编译器应该忽略缺失的注释类型,但许多用户报告说,在类路径上没有@API Guardian JAR 的情况下编译测试会导致发出如下所示的警告:
javacRun Code Online (Sandbox Code Playgroud)warning: unknown enum constant Status.STABLE reason: class file for org.apiguardian.api.API$Status not found为了避免混淆,JUnit 团队决定再次强制依赖@API Guardian JAR 。
作为参考,另请参阅:
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 中完成它,而无需Gradle或Maven。