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({
"додавання 2 і 3 повинно повернути 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 `отримання даних повертає замоковані дані`() {
every { repository.getData() } returns "Замоковані Дані"
val result = service.getData()
assertEquals("Замоковані Дані", result)
}
}
class Service(private val repository: Repository) {
fun getData(): String = repository.getData()
}
interface Repository {
fun getData(): String
}
Приклад виводу
Тест пройдено.
Ці приклади ілюструють основи написання модульних тестів на Kotlin. По мірі зростання вашого додатку, розгляньте можливість дослідження більш передових технік тестування та інструментів, які надаються кожним фреймворком.