En aquest tema, aprendrem com realitzar proves i depuració en aplicacions Android desenvolupades amb Kotlin. Les proves i la depuració són parts essencials del cicle de desenvolupament de programari, ja que ens ajuden a assegurar-nos que el nostre codi funciona correctament i a identificar i corregir errors.

Continguts

Introducció a les Proves

Les proves són un procés sistemàtic per verificar que el nostre codi compleix amb els requisits especificats i funciona com s'espera. Les proves poden ajudar a detectar errors abans que el codi arribi als usuaris finals, millorant així la qualitat del programari.

Tipus de Proves

Hi ha diversos tipus de proves que podem realitzar en una aplicació Android:

  • Proves Unitàries: Verifiquen la funcionalitat de components individuals del codi, com ara funcions o mètodes.
  • Proves d'Integració: Verifiquen que diferents components del sistema funcionen correctament junts.
  • Proves d'Interfície d'Usuari (UI): Verifiquen que la interfície d'usuari de l'aplicació funciona correctament i que els usuaris poden interactuar amb ella com s'espera.
  • Proves de Rendiment: Mesuren el rendiment de l'aplicació sota diferents condicions de càrrega.

Eines de Proves en Android

Android proporciona diverses eines per ajudar-nos a realitzar proves:

  • JUnit: Una biblioteca per escriure proves unitàries.
  • Espresso: Una biblioteca per escriure proves d'interfície d'usuari.
  • Robolectric: Una biblioteca per executar proves unitàries en un entorn JVM en lloc d'un dispositiu Android.

Escriure Proves Unitàries amb JUnit

JUnit és una de les biblioteques més populars per escriure proves unitàries en Java i Kotlin. A continuació, veurem un exemple de com escriure una prova unitària amb JUnit.

Exemple de Prova Unitària

import org.junit.Assert.assertEquals
import org.junit.Test

class CalculatorTest {

    @Test
    fun addition_isCorrect() {
        val calculator = Calculator()
        val result = calculator.add(2, 3)
        assertEquals(5, result)
    }
}

class Calculator {
    fun add(a: Int, b: Int): Int {
        return a + b
    }
}

Explicació

  1. Importació de JUnit: Importem les classes necessàries de JUnit.
  2. Definició de la Prova: Definim una classe de prova CalculatorTest amb un mètode de prova addition_isCorrect.
  3. Creació de l'Objecte: Creem una instància de la classe Calculator.
  4. Execució de la Funció: Executem la funció add amb els valors 2 i 3.
  5. Verificació del Resultat: Utilitzem assertEquals per verificar que el resultat és 5.

Proves d'Interfície d'Usuari amb Espresso

Espresso és una biblioteca per escriure proves d'interfície d'usuari en aplicacions Android. A continuació, veurem un exemple de com escriure una prova d'interfície d'usuari amb Espresso.

Exemple de Prova d'Interfície d'Usuari

import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.rule.ActivityTestRule
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class MainActivityTest {

    @get:Rule
    val activityRule = ActivityTestRule(MainActivity::class.java)

    @Test
    fun buttonClick_changesText() {
        onView(withId(R.id.button)).perform(click())
        onView(withId(R.id.textView)).check(matches(withText("Hello, World!")))
    }
}

Explicació

  1. Importació d'Espresso: Importem les classes necessàries d'Espresso.
  2. Definició de la Prova: Definim una classe de prova MainActivityTest amb un mètode de prova buttonClick_changesText.
  3. Regla d'Activitat: Utilitzem ActivityTestRule per especificar l'activitat que es provarà.
  4. Interacció amb la Vista: Utilitzem onView per trobar la vista amb l'ID R.id.button i fem clic sobre ella.
  5. Verificació del Canvi de Text: Utilitzem onView per trobar la vista amb l'ID R.id.textView i verifiquem que el text ha canviat a "Hello, World!".

Depuració en Android Studio

Android Studio proporciona diverses eines per ajudar-nos a depurar el nostre codi:

  • Logcat: Mostra els missatges de registre de l'aplicació.
  • Breakpoints: Permeten aturar l'execució del codi en un punt específic per inspeccionar l'estat de l'aplicació.
  • Debugger: Permet executar el codi pas a pas i inspeccionar variables i expressions.

Exemple de Depuració

  1. Afegir un Breakpoint: Feu clic a la vora esquerra del codi per afegir un breakpoint.
  2. Executar en Mode de Depuració: Feu clic a la icona de depuració per executar l'aplicació en mode de depuració.
  3. Inspeccionar Variables: Quan l'execució s'aturi en el breakpoint, podeu inspeccionar les variables i expressions en el panell de depuració.

Exercicis Pràctics

  1. Escriure una Prova Unitària: Escriu una prova unitària per a una funció que multiplica dos nombres.
  2. Escriure una Prova d'Interfície d'Usuari: Escriu una prova d'interfície d'usuari que verifica que un text canvia quan es fa clic en un botó.
  3. Depurar un Error: Afegeix un breakpoint en una funció que no funciona correctament i utilitza el debugger per identificar l'error.

Conclusió

En aquesta secció, hem après sobre la importància de les proves i la depuració en el desenvolupament d'aplicacions Android amb Kotlin. Hem vist com escriure proves unitàries amb JUnit, proves d'interfície d'usuari amb Espresso i com utilitzar les eines de depuració d'Android Studio. Aquests coneixements ens ajudaran a assegurar-nos que el nostre codi és robust i lliure d'errors.

© Copyright 2024. Tots els drets reservats