Kotlin:
编写测试

如何操作:

Kotlin 支持使用各种框架进行测试驱动的开发,最受欢迎的有 JUnit、Kotest 和用于模拟的 MockK。以下是使用 JUnit 的一个简单示例:

import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

class CalculatorTest {

    @Test
    fun `adds two numbers`() {
        val calculator = Calculator()
        val result = calculator.add(2, 3)
        assertEquals(5, result)
    }
}

class Calculator {
    fun add(a: Int, b: Int): Int = a + b
}

示例输出

测试通过。

对于使用 Kotest 进行更复杂的测试方法,它提供了更符合 Kotlin 习惯的测试编写风格,见下面的例子:

import io.kotest.core.spec.style.StringSpec
import io.kotest.matchers.shouldBe

class CalculatorSpec : StringSpec({
    "adding 2 and 3 should return 5" {
        val calculator = Calculator()
        calculator.add(2, 3) shouldBe 5
    }
})

使用 MockK 进行带有模拟的测试:

import io.mockk.every
import io.mockk.mockk
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

class ServiceTest {

    private val repository = mockk<Repository>()
    private val service = Service(repository)

    @Test
    fun `get data returns mocked data`() {
        every { repository.getData() } returns "Mocked Data"

        val result = service.getData()

        assertEquals("Mocked Data", result)
    }
}

class Service(private val repository: Repository) {
    fun getData(): String = repository.getData()
}

interface Repository {
    fun getData(): String
}

示例输出

测试通过。

这些示例阐述了在 Kotlin 中编写单元测试的基础。随着应用程序的增长,考虑探索每个框架提供的更高级的测试技术和工具。