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
当我尝试在我的 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