Когда я пытаюсь использовать JUnit 5 Assertions.fail в моих тестах Kotlin, я получаю ошибку компиляции, потому что параметр 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?И почему это происходит в Котлине?У 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.