Используйте класс аннотаций Kotlin в классе Java - PullRequest
0 голосов
/ 06 июля 2018

Я пишу новые функции в Kotlin, но некоторые вещи уже написаны на Java.

Я пишу тесты в Mockito(Kotlin), но Mockito имеет проблемы с финальным классом, поэтому я создал:

annotation class Mockable {}

И добавлено к Gradle-build:

apply plugin: 'kotlin-allopen'

allOpen {
    annotation('com.Mockable')
}

Итак, используя этот класс аннотаций, я могу смоделировать класс Kotlin.

Как я могу использовать эту аннотацию в классе Java?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Как я могу использовать эту аннотацию в классе Java?

Вы не можете использовать эту аннотацию таким образом, потому что kotlin-allopen работает только на классах Kotlin. В Java просто не помечайте классы как final ...

В этом отношении, в Kotlin это также не кажется полезным, если я правильно вас понял: kotlin-allopen используется, когда аннотация будет обрабатываться каким-либо образом, что требует создания подклассов аннотированного типа, так что вы ' мне нужно написать open и аннотацию . Здесь вы можете написать open вместо @Mockable.

0 голосов
/ 06 июля 2018

Вам не нужно это в Java . Но независимо от этого, есть альтернативный метод использования Mockito с Kotlin :

Создать файл src / test / resources / mockito-extensions / org.mockito.plugins.MockMaker с содержимым:

mock-maker-inline

Это изменяет поведение насмешки, чтобы также поддерживать классы final, такие как Kotlin . Для некоторых Java классов мне пришлось использовать spy() вместо mock() впоследствии.

...