Junit 5 Assertions.fail () не может выводить тип в Kotlin - PullRequest
0 голосов
/ 24 октября 2018

Когда я пытаюсь использовать 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.

1 Ответ

0 голосов
/ 24 октября 2018

Пожалуйста, посмотрите эту проблему: 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

...