Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit5和IntelliJ IDEA:Kotlin函数命名,带倒勾和括号_Java_Kotlin_Intellij Idea_Junit_Jetbrains Ide - Fatal编程技术网

Java JUnit5和IntelliJ IDEA:Kotlin函数命名,带倒勾和括号

Java JUnit5和IntelliJ IDEA:Kotlin函数命名,带倒勾和括号,java,kotlin,intellij-idea,junit,jetbrains-ide,Java,Kotlin,Intellij Idea,Junit,Jetbrains Ide,从JUnit4升级到JUnit5并从org.JUnit.Test升级到org.JUnit.jupiter.api.Test后,如果您直接通过IntellijIDEA运行测试方法(按类运行测试工作正常),则测试调用将停止工作 解决方法是从测试名称中删除括号。请参见下面的Kotlin示例 JUnit4: import org.junit.Test class A { @Test fun `my (fun)` (){ } } 直接从Idea运行此方法时效果良好 JUnit

JUnit4升级到JUnit5并从
org.JUnit.Test
升级到
org.JUnit.jupiter.api.Test
后,如果您直接通过IntellijIDEA运行测试方法(按类运行测试工作正常),则测试调用将停止工作

解决方法是从测试名称中删除括号。请参见下面的Kotlin示例

JUnit4:

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四轮马车奖金:


看起来像是Junit问题。尝试将
@JvmName(“myFun”)
预先添加到函数中,看看是否works@smac89,是的,当然这很好-这与将名称改为“fun myFun”是一样的@smac89我想问题来自Intellij'Braces'通常指的是
{
}
<代码>(
通常是“括号”、“圆括号”、“括号”或“括号”。(见)我不认为这是IntelliJ的问题,因为我刚刚在IntelliJ上做了这项工作。你有没有可能用格拉德尔?