未解决的对类,方法的引用
我是kotlin
(基本上是从今天开始的)
我想为我的GRLMessage
类写一个类似于构建器的dsl
。
data class GRLMessage(var method: GRLMethod, var headers: Map<String, String>, var multipart: Object) { fun message(init: GRLMessage.() -> Unit) : GRLMessage { init() return this } fun method(init: GRLMessage.() -> GRLMethod) : GRLMessage { method = init() return this } fun headers(init: GRLMessage.() -> Unit) : GRLMessage { init() return this } fun header(init: GRLMessage.() -> Pair<String, String>) : GRLMessage { headers.plus(init()) return this } fun multipart(init: GRLMessage.() -> Object) : GRLMessage { multipart = this.init() return this } }
为了检查它,我添加了测试。
import org.junit.Assert.* import org.junit.* class GRLMessageTest { data class DummyMultipart(val field: String) {} @Test fun grlMessageBuilderTest() { val grlMessage = GrlMessage().message { method { GRLMethod.POST } headers { header { Pair("contentType", "object") } header { Pair("objectType", "DummyMultipart") } } multipart { DummyMultipart("dummy") } } val multipart = DummyMultipart("dummy") val headers = mapOf( Pair("contentType", "object"), Pair("objectType", "DummyMultipart") ) val method = GRLMethod.POST assertEquals(multipart, grlMessage.multipart) assertEquals(headers, grlMessage.headers) assertEquals(method, grlMessage.method) } }
两个类都在相同的包(相对 – 一个是在src/main/kotlin
,另一个在src/test/kotlin
)。
当我尝试使用gradle build
构建应用程序时,它在compileTestKotlin
任务上失败,出错
GRLMessageTest.kt: (13, 26): Unresolved reference: GrlMessage GRLMessageTest.kt: (14, 13): Unresolved reference: method GRLMessageTest.kt: (15, 13): Unresolved reference: headers GRLMessageTest.kt: (17, 17): Unresolved reference: header GRLMessageTest.kt: (19, 13): Unresolved reference: multipart
问题是什么?
这是布局
这是具体子项目和插件的build.gradle
你的类和你的测试对类的引用有一个命名不匹配。
你的类被命名为GRLMessage
但是在你的测试中,你将它引用为GrlMessage
而Kotlin区分大小写。 因此这些并不相同。 您需要在两者中使用完全相同的标识符。