在从JUnit4升级到JUnit5并从 org.junit.Test
至 org.junit.jupiter.api.Test
如果您直接通过intellij idea(按类运行test工作正常)为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中的功能性bug还是junit中的bug?
ps小车奖励:
暂无答案!
目前还没有任何答案,快来回答吧!