Unit-тестирование в Kotlin
НАВИГАЦИЯ ПО СТРАНИЦЕ
Unit-тестирование в Kotlin обеспечивает проверку отдельных компонентов (или "юнитов") кода на корректность выполнения своих функций. Давайте рассмотрим основы написания unit-тестов в Kotlin с использованием библиотеки JUnit.
1. Зависимости
Добавьте зависимость JUnit в файл build.gradle:
dependencies {
testImplementation 'junit:junit:4.13.2'
}
2. Написание Unit-тестов
Создайте тестовый класс, который содержит методы, проверяющие функциональность кода.
import org.junit.Test
import kotlin.test.assertEquals
class CalculatorTest {
@Test
fun testAddition() {
val result = add(3, 5)
assertEquals(8, result)
}
@Test
fun testSubtraction() {
val result = subtract(8, 3)
assertEquals(5, result)
}
// Другие тестовые методы...
private fun add(a: Int, b: Int): Int {
return a + b
}
private fun subtract(a: Int, b: Int): Int {
return a - b
}
}
3. Запуск тестов
Вы можете запустить тесты из командной строки или используя интегрированную среду разработки (IDE), такую как IntelliJ IDEA или Android Studio.
Для выполнения тестов из командной строки:
./gradlew test
4. Использование assert
JUnit предоставляет множество методов assert, которые можно использовать для проверки ожидаемых результатов. В приведенном выше примере использован assertEquals.
import org.junit.Test
import kotlin.test.assertTrue
import kotlin.test.assertFalse
class ExampleTest {
@Test
fun testString() {
val str = "Kotlin"
assertEquals("Kotlin", str)
assertTrue(str.startsWith("K"))
assertFalse(str.endsWith("Java"))
}
// Другие тестовые методы...
}
5. Mocking и Dependency Injection
Для тестирования кода, зависящего от внешних ресурсов, таких как базы данных или внешние API, используйте механизмы mock-объектов и внедрение зависимостей.
import org.junit.Test
import org.mockito.Mockito.*
class ExampleServiceTest {
@Test
fun testExampleService() {
// Создание mock-объекта
val databaseMock = mock(Database::class.java)
// Внедрение зависимости (dependency injection)
val service = ExampleService(databaseMock)
// Задание поведения mock-объекта
`when`(databaseMock.getData()).thenReturn("Mocked data")
// Вызов метода объекта, зависящего от базы данных
val result = service.getDataFromDatabase()
// Проверка ожидаемого результата
assertEquals("Mocked data", result)
}
}
Это лишь примеры базового unit-тестирования в Kotlin с использованием JUnit. Работа с различными библиотеками, такими как MockK, TestNG или Spek, также может быть полезной в зависимости от требований вашего проекта.