在Java类中使用Kotlin注释类

时间:2018-07-06 11:33:45

标签: java android kotlin annotations mockito

我正在用Kotlin编写新功能,但是有些东西已经用Java编写了。

我正在用Mockito(Kotlin)编写测试,但是Mockito的最终课程有问题,所以我创建了:

annotation class Mockable {}

并添加到Gradle-build

apply plugin: 'kotlin-allopen'

allOpen {
    annotation('com.Mockable')
}

因此,使用此注释类可以模拟Kotlin类。

如何在Java类中使用此批注?

2 个答案:

答案 0 :(得分:1)

您在 Java 中不需要它。但是无论如何,还有一种替代方法可以将 Mockito Kotlin 一起使用:

创建一个文件 src / test / resources / mockito-extensions / org.mockito.plugins.MockMaker ,内容如下:

mock-maker-inline

这改变了嘲笑行为,使其还支持final类,例如 Kotlin 类。对于某些 Java 类,之后我不得不使用spy()而不是mock()

答案 1 :(得分:1)

  

如何在Java类中使用此批注?

您不能以这种方式使用此注释,因为kotlin-allopen仅适用于Kotlin类。在Java中,只是不要将类标记为final ...

就此而言,如果我理解正确,在Kotlin中似乎也没有用:kotlin-allopen用于将以某种方式处理注释(这需要创建带注释类型的子类)时使用,因此您需要编写open 以及注释。在这里,您可以编写open 代替 @Mockable