Используйте класс аннотации Kotlin в классе Java

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

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

annotation class Mockable {}

И добавил в Gradle-build:

apply plugin: 'kotlin-allopen'

allOpen {
    annotation('com.Mockable')
}

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

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

вы пробовали просто использовать @Mockable?

EpicPandaForce 06.07.2018 14:25
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
347
2

Ответы 2

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

Создайте файл SRC / тест / ресурсы / mockito-расширения / org.mockito.plugins.MockMaker с содержимым:

mock-maker-inline

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

Я видел этот вариант, но он почти в 3 раза медленнее по производительности

Esperanz0 06.07.2018 14:06

How I can use this annotation in Java class ?

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

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

Другие вопросы по теме