我正在用Kotlin编写新功能,但是有些东西已经用Java编写了。
我正在用Mockito(Kotlin)
编写测试,但是Mockito
的最终课程有问题,所以我创建了:
annotation class Mockable {}
并添加到Gradle-build
:
apply plugin: 'kotlin-allopen'
allOpen {
annotation('com.Mockable')
}
因此,使用此注释类可以模拟Kotlin
类。
如何在Java类中使用此批注?
答案 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
。