junit5和intellij思想:用反记号和方括号命名kotlin函数

ergxz8rk  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(274)

在从JUnit4升级到JUnit5并从 org.junit.Testorg.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小车奖励:

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题