尚未解决的类,方法

时间:2016-09-16 20:54:44

标签: kotlin

我是kotlin的新手(基本上是今天开始的)

我想为我的dsl课程编写一个GRLMessage类似的构建器。

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

有什么问题?

这是布局

enter image description here

这是具体子项目和插件的build.gradle

enter image description here enter image description here

1 个答案:

答案 0 :(得分:4)

您的类与测试中对类的引用之间存在命名不匹配。

您的课程名为GRLMessage,但在您的考试中,您将其引用为GrlMessage,而Kotlin则区分大小写。因此,这些不被认为是相同的。您需要在两者中使用完全相同的标识符。