Quali librerie utilizzi per i test in Kotlin?
sobes.tech AI
Risposta dell'AI
-
JUnit 5: Framework standard per i test unitari in JVM. Lo uso per la maggior parte dei test unitari.
-
MockK: Libreria per il mocking di oggetti e comportamenti. Utile per creare mock, stubs e verificare l'interazione tra oggetti.
-
Kotest: Framework multifunzionale per i test, che supporta diversi stili di scrittura dei test (Spec, WordSpec, StringSpec, ecc.). Lo uso spesso per scrivere test più espressivi e strutturati.
-
Truth: Libreria per creare affermazioni (assertions) leggibili. Rende i test più comprensibili.
-
Robolectric: Framework per testare applicazioni Android senza un dispositivo virtuale o emulatore. Simula l'ambiente Android sulla JVM.
-
Espresso: Framework di Google per testare l'interfaccia utente in Android. Lo uso per test di integrazione e UI nei progetti Android.
Esempio di utilizzo di MockK:
// Importiamo le classi necessarie
import io.mockk.*
import org.junit.jupiter.api.Test
// Classe di esempio che testeremo
class MyService(private val dependency: Dependency) {
fun processData(data: String): String {
val processed = dependency.process(data)
return "Result: $processed"
}
}
// Classe di dipendenza da mockare
interface Dependency {
fun process(input: String): String
}
class MyServiceTest {
@Test
fun testProcessData() {
// Creiamo il mock di dipendenza
val mockDependency = mockk<Dependency>()
// Definiamo il comportamento del mock
every { mockDependency.process("input") } returns "processed_data"
// Creiamo un'istanza della classe da testare con il mock
val myService = MyService(mockDependency)
// Eseguiamo il metodo da testare
val result = myService.processData("input")
// Verifichiamo il risultato
assert(result == "Result: processed_data")
// Verifichiamo che il metodo del mock sia stato chiamato con l'argomento atteso
verify { mockDependency.process("input") }
}
}