Sobes.tech
Junior

Quelles bibliothèques utilisez-vous pour les tests en Kotlin?

sobes.tech IA

Réponse de l'IA

  • JUnit 5 : Cadre de test unitaire standard pour JVM. Je l'utilise pour la plupart des tests unitaires.

  • MockK : Bibliothèque pour simuler des objets et comportements. Utile pour créer des mocks, stubs et vérifier l'interaction des objets.

  • Kotest : Cadre de test multifonctionnel supportant différents styles d'écriture de tests (Spec, WordSpec, StringSpec, etc.). Je l'utilise souvent pour écrire des tests plus expressifs et structurés.

  • Truth : Bibliothèque pour créer des assertions lisibles. Rend les tests plus compréhensibles.

  • Robolectric : Cadre pour tester des applications Android sans appareil virtuel ou émulateur. Simule l'environnement Android sur JVM.

  • Espresso : Cadre de Google pour tester l'interface utilisateur sur Android. Je l'utilise pour des tests d'intégration et UI dans des projets Android.

Exemple d'utilisation de MockK :

// Importer les classes nécessaires
import io.mockk.*
import org.junit.jupiter.api.Test

// Classe d'exemple à tester
class MyService(private val dependency: Dependency) {
    fun processData(data: String): String {
        val processed = dependency.process(data)
        return "Result: $processed"
    }
}

// Classe de dépendance à mocker
interface Dependency {
    fun process(input: String): String
}

class MyServiceTest {

    @Test
    fun testProcessData() {
        // Créer le mock de la dépendance
        val mockDependency = mockk<Dependency>()

        // Définir le comportement du mock
        every { mockDependency.process("input") } returns "processed_data"

        // Créer une instance de la classe à tester avec le mock
        val myService = MyService(mockDependency)

        // Appeler la méthode à tester
        val result = myService.processData("input")

        // Vérifier le résultat
        assert(result == "Result: processed_data")

        // Vérifier que la méthode du mock a été appelée avec l'argument attendu
        verify { mockDependency.process("input") }
    }
}