未解决的对类,方法的引用

我是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区分大小写。 因此这些并不相同。 您需要在两者中使用完全相同的标识符。