Junit 5 Assertions.fail() 无法推断 Kotlin 中的类型

Junit 5 Assertions.fail() can not infer type in Kotlin

当我尝试在我的 Kotlin 测试中使用 JUnit 5 Assertions.fail 时,我遇到了编译失败,因为无法推断出参数 V:

import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
   @Test
   fun simpleTest() {
     fail("Does not compile") 
   }
}

当然这个问题的简单解决方法是:

import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
   @Test
   fun simpleTest() {
     val result: Any = fail("Compiles") 
   }
}

但是我不想在我的代码中创建一个未使用的值。有没有一种无需声明 val 即可定义类型的方法?还有为什么这会发生在 Kotlin 中? Java 泛型没有这样的问题:

import org.junit.jupiter.api.Assertions.fail;
class MyJavaTests {
    @Test
    public void simpleTest() {
        fail("Compiles);
    }
}

编辑:我在发布问题后立即发现解决方案是参数化调用:

import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
   @Test
   fun simpleTest() {
     fail<Any>("Does not compile") 
   }
 }

但是仍然愿意接受可以解释为什么我需要在 kotlin 中执行此操作的答案。

请看这个问题:https://github.com/junit-team/junit5/issues/1209

这似乎已经在 junit-jupiter-api Assertions.kt 文件 中修复为 [=24= 中的顶级函数] 包。

导入 org.junit.jupiter.api.fail 而不是 org.junit.jupiter.api.Assertions.fail