如何解决JUnit5和IntelliJ IDEA:使用反引号和括号的Kotlin函数命名
从 JUnit 4 升级到 JUnit 5 并从org.junit.Test
升级到org.junit.jupiter.api.Test
后,如果您通过直接运行测试方法,则测试调用将停止工作 IntelliJ IDEA (按类运行测试效果很好),用于在Kotlin中使用方括号和反引号进行测试。
解决方法是从测试名称中删除括号。请参见下面的Kotlin示例。
JUnit 4:
import org.junit.Test
class A {
@Test
fun `my (fun)` (){
}
}
当您直接从Idea中运行此方法时,效果很好
JUnit 5:
import org.junit.jupiter.api.Test
class A {
@Test
fun `my (fun)` (){
}
}
由于名称中带有花括号“()”而异常失败:
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:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
Caused by: org.junit.platform.commons.JUnitException: MethodSelector [className = 'dsf.A',methodName = 'my ',methodParameterTypes = 'fun'] resolution failed
我知道发生问题是因为JUnit中的API发生了变化,现在IntelliJ传递了带有括号的参数,这些括号已被解析为一些新的JUnitApi参数。
但是有人可以帮助您理解此问题的深层根源。是Idea中的功能性错误还是JUnit中的错误?
PS越野车奖金:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。