我正在用Kotlin写新特性,但有些东西已经用Java写好了。
我正在用Mockito(Kotlin)
编写测试,但是Mockito
对最终类有问题,所以我创建了:
annotation class Mockable {}
并添加到Gradle-build
中:
apply plugin: 'kotlin-allopen'
allOpen {
annotation('com.Mockable')
}
所以使用这个注解类,我可以模拟Kotlin
类。
如何在Java类中使用这个注解?
发布于 2018-07-06 11:59:17
在Java中您不需要它。尽管如此,还有一种替代方法可以将Mockito与Kotlin一起使用
创建一个包含内容的文件src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker:
mock-maker-inline
这改变了模拟行为,使其也支持像Kotlin这样的final
类。不过,对于一些Java类,后来我不得不使用spy()
而不是mock()
。
发布于 2018-07-06 16:40:15
如何在Java类中使用这个注解?
您不能以这种方式使用这个注释,因为kotlin-allopen
只适用于Kotlin类。在Java语言中,只要不将类标记为final
...
就此而言,在Kotlin中,如果我理解正确的话,它似乎也没有什么用处:当要以某种方式处理注释时使用kotlin-allopen
,这需要创建带注释类型的子类,所以除了注释之外,还需要编写open
。在这里,您可以编写open
而不是@Mockable
。
https://stackoverflow.com/questions/51209530
复制相似问题