当我尝试在 Kotlin 测试中使用 JUnit 5 Assertions.fail 时,我编译失败,因为无法推断参数 V:
import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
@Test
fun simpleTest() {
fail("Does not compile")
}
}
Run Code Online (Sandbox Code Playgroud)
当然,这个问题的一个简单解决方案是:
import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
@Test
fun simpleTest() {
val result: Any = fail("Compiles")
}
}
Run Code Online (Sandbox Code Playgroud)
但是我不想在我的代码中创建一个未使用的值。有没有办法定义类型而不必声明 val?另外,为什么在 Kotlin 中会发生这种情况?Java 对泛型没有这样的问题:
import org.junit.jupiter.api.Assertions.fail;
class MyJavaTests {
@Test
public void simpleTest() {
fail("Compiles);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我在发布问题后立即发现解决方案是参数化调用:
import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
@Test
fun simpleTest() {
fail<Any>("Does not compile")
}
}
Run Code Online (Sandbox Code Playgroud)
但是仍然愿意接受可以解释为什么我需要在 kotlin 中执行此操作的答案。
请看这个问题:https : //github.com/junit-team/junit5/issues/1209
似乎这已经在 junit-jupiter-api Assertions.kt 文件中作为 org.junit.jupiter.api 包中的顶级函数进行了修复。
导入org.junit.jupiter.api.fail而不是 org.junit.jupiter.api。断言.fail
归档时间: |
|
查看次数: |
1248 次 |
最近记录: |