Kotlin JUnit规则

Kotlin JUnit规则,kotlin,Kotlin,在Kotlin M13中,这是创建JUnit规则的一种可接受的方法: @Rule@publicField val temp=TemporaryFolder() 既然@publicField已经被弃用,那么如何才能实现这一点呢?IDE提示建议将@publicField替换为lateinit,但不再允许使用lateinit val,我不确定这是否会有帮助,即使它们是这样。只是猜测一下,但以下可能会起作用(使用var): 我会试着问科特林的闲事 目前,这是修复任何问题的最快方法。从Kotlin 1.0

在Kotlin M13中,这是创建JUnit规则的一种可接受的方法:

@Rule@publicField val temp=TemporaryFolder()


既然
@publicField
已经被弃用,那么如何才能实现这一点呢?IDE提示建议将
@publicField
替换为
lateinit
,但不再允许使用
lateinit val
,我不确定这是否会有帮助,即使它们是这样。

只是猜测一下,但以下可能会起作用(使用
var
):

我会试着问科特林的闲事
目前,这是修复任何问题的最快方法。

从Kotlin 1.0开始,答案如下:

@Rule @JvmField val temp = TemporaryFolder()

公开与属性具有相同可见性的支持字段,因此是JUnit规则要使用的公共字段。

在本例中,JUnit不将临时视为字段,因为它实际上不是字段。在那里的某个地方有一个隐藏的支持字段,诀窍是如何对其应用注释。对不起,@jkschneider,你真的检查了它的工作吗?因为根据文档,它创建了一个字段,应该可以做到这一点。不幸的是,我自己没有和JUnit一起工作。
@Rule @JvmField val temp = TemporaryFolder()