如何将 Junit5 @TempDir 与 Kotlin 一起使用? (“JvmField 只能应用于最终属性”编译错误)

问题描述 投票:0回答:2

我正在尝试(到目前为止没有任何运气)将 Junit5 @Tempdir 注释与 Kotlin 一起使用。
继之前的 stackoverflow 帖子(链接此处)之后,我尝试了以下代码:

@SpringBootTest
class MyClass {

    @TempDir
    @JvmField
    var tempFolder: File? = null
    
    @Test
    fun mytest() {
        assert(true);
    }

}

不幸的是,我在编译时收到以下错误:“JvmField 只能应用于最终属性”...
有什么想法吗?
预先非常感谢您的专业知识和时间。
最好的问候

kotlin junit5 tempdir
2个回答
1
投票

对于仍在寻找答案的其他人,下面的代码可以解决上述问题:

@SpringBootTest
class MyClass {

    @Test
    fun mytest() {
        assert(true);
    }
    
    companion object {
        @TempDir
        lateinit var tempFolder: File
    }
}

0
投票

我有一个不同的问题导致我写这篇文章:

尝试在 kotlin 后期初始化变量上使用 @TempDir 并收到未初始化的错误。

结果我用它来派生一些其他字段,而它尚未初始化 - 我通过使这些派生字段使用

by lazy
来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.