Koje biblioteke koristite za testiranje u Kotlinu?
sobes.tech АИ
Одговор од АИ
-
JUnit 5: Standardni okvir za jedinice testova u JVM-u. Koristim ga za većinu jedinica testova.
-
MockK: Biblioteka za mockovanje objekata i ponašanja. Korisno za kreiranje mockova, stubova i verifikaciju interakcija.
-
Kotest: Višenamenski okvir za testiranje koji podržava različite stilove pisanja testova (Spec, WordSpec, StringSpec itd.). Često ga koristim za pisanje izražajnijih i strukturiranijih testova.
-
Truth: Biblioteka za kreiranje čitljivih tvrdnji (assertions). Olakšava razumevanje testova.
-
Robolectric: Okvir za testiranje Android aplikacija bez virtuelnog uređaja ili emulatora. Imitira Android okruženje na JVM-u.
-
Espresso: Google-ov okvir za testiranje korisničkog interfejsa u Android-u. Koristim ga za integracione i UI testove u Android projektima.
Primer korišćenja MockK:
// Uvozimo potrebne klase
import io.mockk.*
import org.junit.jupiter.api.Test
// Primer klase koju ćemo testirati
class MyService(private val dependency: Dependency) {
fun processData(data: String): String {
val processed = dependency.process(data)
return "Result: $processed"
}
}
// Klasa zavisnosti koju ćemo mock-ovati
interface Dependency {
fun process(input: String): String
}
class MyServiceTest {
@Test
fun testProcessData() {
// Kreiramo mock zavisnosti
val mockDependency = mockk<Dependency>()
// Definišemo ponašanje mока
every { mockDependency.process("input") } returns "processed_data"
// Kreiramo instancu klase za testiranje sa mock-om
val myService = MyService(mockDependency)
// Pozivamo testiranu metodu
val result = myService.processData("input")
// Proveravamo rezultat
assert(result == "Result: processed_data")
// Proveravamo da li je metoda mока pozvana sa očekivanim argumentom
verify { mockDependency.process("input") }
}
}