Китобхонаҳои тестиро дар Kotlin кадомҳоянд?
sobes.tech AI
Ҷавоб аз AI
-
JUnit 5: Фреймворк стандарти барои озмоиши воҳидӣ дар JVM. Ман онро барои зиёда аз ҳама озмоишҳои воҳидӣ истифода мебарам.
-
MockK: Китобхона барои моккунии объектҳо ва рафторҳо. Барои сохтани мокҳо, стабҳо ва тасдиқи ҳамкориҳо муфид аст.
-
Kotest: Фреймворки бисёрфунксионалӣ барои озмоишҳо, ки услубҳои гуногуни навишти озмоишҳоро дастгирӣ мекунад (Spec, WordSpec, StringSpec ва ғайра). Ман онро барои навиштани озмоишҳои бештар баёнӣ ва сохторӣ истифода мебарам.
-
Truth: Китобхона барои эҷоди иддаоҳои хонданӣ (assertions). Озмоишҳоро бештар фаҳмо мекунад.
-
Robolectric: Фреймворк барои озмоиши барномаҳои Android бе дастгоҳи виртуалӣ ё эмулятор. Мавзеи Android-ро дар JVM имитатсия мекунад.
-
Espresso: Фреймворки аз Google барои озмоиши интерфейси корбар дар Android. Ман онро барои озмоишҳои интегратсионӣ ва UI дар лоиҳаҳои Android истифода мебарам.
Маслиҳат барои истифодаи MockK:
// Импорт кардани синфҳо зарурӣ
import io.mockk.*
import org.junit.jupiter.api.Test
// Синфи намуна, ки мо озмоиш мекунем
class MyService(private val dependency: Dependency) {
fun processData(data: String): String {
val processed = dependency.process(data)
return "Result: $processed"
}
}
// Синфи вобастагӣ, ки мо мок мекунем
interface Dependency {
fun process(input: String): String
}
class MyServiceTest {
@Test
fun testProcessData() {
// Сохтани мок вобастагӣ
val mockDependency = mockk<Dependency>()
// Тартиби рафтори мокро муайян мекунем
every { mockDependency.process("input") } returns "processed_data"
// Сохтани намунаи синф бо мок
val myService = MyService(mockDependency)
// Даъво кардани усули озмоишӣ
val result = myService.processData("input")
// Санҷидани натиҷа
assert(result == "Result: processed_data")
// Санҷидани он, ки усули мок бо аргументи интизорӣ даъват шудааст
verify { mockDependency.process("input") }
}
}