是否可以在不同的源代碼集中使用Kotlin包函數和包屬性?當我嘗試這樣做時,我有NoSuchMethodError
拋出。Kotlin:測試中的java.lang.NoSuchMethodError
例
我有科特林代碼,並在兩份sourcesets,main
和test
搖籃工程。 在main
,我有以下的代碼中的文件之一:
package ru.ifmo.ctddev.igushkin.dkvs
...
public val payloadSplitter: String = " ### "
在test
我嘗試用下面的代碼來訪問payloadSplitter
:
package ru.ifmo.ctddev.igushkin.dkvs
...
public class MessageTests {
...
test fun testParsing() {
...
checkParseAndToString("p1b 345 ${payloadSplitter} set a b c")
}
...
}
,準確地在第一線,其中payloadSplitter
是訪問,在運行時我得到
java.lang.NoSuchMethodError: ru.ifmo.ctddev.igushkin.dkvs.DkvsPackage.getPayloadSplitter()Ljava/lang/String;
其他全局變量和函數在test
中也無法訪問,但有相同的錯誤。
UPD科特林隊解釋這個問題,並公佈了修正here。
在測試中,ru.ifmo.ctddev.igushkin.dkvs包中是否有任何頂級函數/屬性? –
你如何運行測試?你能發佈你的gradle配置嗎?它看起來像是測試包是針對主包進行編譯的,但運行時沒有它。 –
@SalomonBRYS,https://github.com/h0tk3y/dkvs/blob/master/build.gradle - 這是它。 – hotkey