Jakie biblioteki używasz do testowania w Kotlin?
sobes.tech AI
Odpowiedź od AI
-
JUnit 5: Standardowe ramy do testów jednostkowych w JVM. Używam go do większości testów jednostkowych.
-
MockK: Biblioteka do mockowania obiektów i zachowań. Przydatna do tworzenia mocków, stubów i weryfikacji interakcji obiektów.
-
Kotest: Wielofunkcyjne ramy testowe obsługujące różne style pisania testów (Spec, WordSpec, StringSpec itp.). Często używam go do pisania bardziej wyrazistych i strukturalnych testów.
-
Truth: Biblioteka do tworzenia czytelnych twierdzeń (assertions). Ułatwia zrozumienie testów.
-
Robolectric: Ramy do testowania aplikacji Android bez wirtualnego urządzenia lub emulatora. Symuluje środowisko Android na JVM.
-
Espresso: Ramy od Google do testowania interfejsu użytkownika w Android. Używam go do testów integracyjnych i UI w projektach Android.
Przykład użycia MockK:
// Importujemy niezbędne klasy
import io.mockk.*
import org.junit.jupiter.api.Test
// Przykładowa klasa, którą będziemy testować
class MyService(private val dependency: Dependency) {
fun processData(data: String): String {
val processed = dependency.process(data)
return "Result: $processed"
}
}
// Klasa zależności, którą będziemy mockować
interface Dependency {
fun process(input: String): String
}
class MyServiceTest {
@Test
fun testProcessData() {
// Tworzymy mock zależności
val mockDependency = mockk<Dependency>()
// Definiujemy zachowanie mocka
every { mockDependency.process("input") } returns "processed_data"
// Tworzymy instancję klasy testowanej z mockiem
val myService = MyService(mockDependency)
// Wywołujemy testowaną metodę
val result = myService.processData("input")
// Sprawdzamy wynik
assert(result == "Result: processed_data")
// Sprawdzamy, czy metoda mocka została wywołana z oczekiwanym argumentem
verify { mockDependency.process("input") }
}
}