Introducció
Les proves són una part essencial del desenvolupament de programari, ja que asseguren que el codi funcioni correctament i que els canvis futurs no introdueixin errors. En aquest tema, aprendrem sobre les proves unitàries i les proves de la interfície d'usuari (UI) en el context del desenvolupament d'aplicacions Android.
Objectius
- Comprendre la importància de les proves unitàries i les proves de la UI.
- Aprendre a configurar i escriure proves unitàries en Android.
- Aprendre a configurar i escriure proves de la UI en Android.
- Conèixer les eines i biblioteques més utilitzades per a les proves en Android.
Contingut
- Proves Unitàries
1.1. Què són les Proves Unitàries?
Les proves unitàries són proves automàtiques que verifiquen el funcionament d'unitats individuals de codi, com ara funcions o mètodes. Aquestes proves ajuden a assegurar que cada part del codi funcioni correctament de manera aïllada.
1.2. Configuració de les Proves Unitàries en Android Studio
Per configurar les proves unitàries en Android Studio, segueix aquests passos:
-
Afegir Dependències de Test: Afegeix les següents dependències al fitxer
build.gradle
del mòdul de l'aplicació:dependencies { testImplementation 'junit:junit:4.13.2' testImplementation 'org.mockito:mockito-core:3.11.2' }
-
Crear una Classe de Test: Crea una nova classe de test dins del directori
src/test/java
.public class ExampleUnitTest { @Test public void addition_isCorrect() { assertEquals(4, 2 + 2); } }
1.3. Escriure Proves Unitàries
A continuació, es mostra un exemple de prova unitària per a una funció que suma dos nombres:
public class Calculator { public int add(int a, int b) { return a + b; } } public class CalculatorTest { private Calculator calculator; @Before public void setUp() { calculator = new Calculator(); } @Test public void testAdd() { int result = calculator.add(2, 3); assertEquals(5, result); } }
- Proves de la Interfície d'Usuari (UI)
2.1. Què són les Proves de la UI?
Les proves de la UI són proves automàtiques que verifiquen el funcionament de la interfície d'usuari de l'aplicació. Aquestes proves asseguren que els elements de la UI es comportin correctament i que les interaccions de l'usuari produeixin els resultats esperats.
2.2. Configuració de les Proves de la UI en Android Studio
Per configurar les proves de la UI en Android Studio, segueix aquests passos:
-
Afegir Dependències de Test: Afegeix les següents dependències al fitxer
build.gradle
del mòdul de l'aplicació:dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
-
Crear una Classe de Test de la UI: Crea una nova classe de test dins del directori
src/androidTest/java
.@RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { @Test public void useAppContext() { // Context of the app under test. Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); assertEquals("com.example.myapp", appContext.getPackageName()); } }
2.3. Escriure Proves de la UI amb Espresso
Espresso és una biblioteca popular per a les proves de la UI en Android. A continuació, es mostra un exemple de prova de la UI que verifica que un TextView mostra el text correcte després de fer clic en un botó:
@RunWith(AndroidJUnit4.class) public class MainActivityTest { @Rule public ActivityScenarioRule<MainActivity> activityRule = new ActivityScenarioRule<>(MainActivity.class); @Test public void testButtonClick() { // Fer clic en el botó onView(withId(R.id.button)).perform(click()); // Verificar que el TextView mostra el text correcte onView(withId(R.id.textView)).check(matches(withText("Hello, World!"))); } }
- Eines i Biblioteques per a les Proves en Android
- JUnit: Una biblioteca per a les proves unitàries.
- Mockito: Una biblioteca per a la creació de mocks en les proves unitàries.
- Espresso: Una biblioteca per a les proves de la UI.
- Robolectric: Una biblioteca per a les proves unitàries que permet executar proves en un entorn JVM en lloc d'un dispositiu o emulador.
Exercicis Pràctics
Exercici 1: Escriure una Prova Unitària
- Crea una classe
MathUtils
amb un mètodemultiply(int a, int b)
que multipliqui dos nombres. - Escriu una prova unitària per al mètode
multiply
que verifiqui que el resultat és correcte.
Solució
public class MathUtils { public int multiply(int a, int b) { return a * b; } } public class MathUtilsTest { private MathUtils mathUtils; @Before public void setUp() { mathUtils = new MathUtils(); } @Test public void testMultiply() { int result = mathUtils.multiply(3, 4); assertEquals(12, result); } }
Exercici 2: Escriure una Prova de la UI
- Crea una activitat amb un EditText i un TextView.
- Escriu una prova de la UI que verifiqui que el TextView mostra el text introduït en l'EditText després de fer clic en un botó.
Solució
// MainActivity.java public class MainActivity extends AppCompatActivity { private EditText editText; private TextView textView; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = findViewById(R.id.editText); textView = findViewById(R.id.textView); button = findViewById(R.id.button); button.setOnClickListener(v -> { String text = editText.getText().toString(); textView.setText(text); }); } } // MainActivityTest.java @RunWith(AndroidJUnit4.class) public class MainActivityTest { @Rule public ActivityScenarioRule<MainActivity> activityRule = new ActivityScenarioRule<>(MainActivity.class); @Test public void testEditTextAndButton() { // Introduir text en l'EditText onView(withId(R.id.editText)).perform(typeText("Test Text")); // Fer clic en el botó onView(withId(R.id.button)).perform(click()); // Verificar que el TextView mostra el text introduït onView(withId(R.id.textView)).check(matches(withText("Test Text"))); } }
Conclusió
En aquest tema, hem après sobre la importància de les proves unitàries i les proves de la UI en el desenvolupament d'aplicacions Android. Hem vist com configurar i escriure proves unitàries amb JUnit i Mockito, així com proves de la UI amb Espresso. A més, hem practicat aquests conceptes amb exercicis pràctics. Les proves són una part crucial del desenvolupament de programari, ja que ajuden a assegurar la qualitat i la fiabilitat del codi.
Curs d'Android Studio
Mòdul 1: Introducció a Android Studio
- Introducció a Android Studio
- Configuració d'Android Studio
- Comprensió de la Interfície d'Android Studio
- Creació del teu Primer Projecte Android
Mòdul 2: Desenvolupament Bàsic d'Android
- Comprensió de l'Estructura del Projecte Android
- Introducció als Dissenys XML
- Components Bàsics de la Interfície d'Usuari
- Introducció a les Activitats
- Executar la teva Aplicació en un Emulador
Mòdul 3: Desenvolupament Intermedi d'Android
- Introducció als Intents
- Treballar amb Fragments
- Gestió de l'Entrada de l'Usuari
- Ús de RecyclerView
- Xarxes en Android
Mòdul 4: Desenvolupament Avançat d'Android
- Persistència de Dades amb SQLite
- Ús de Room per a la Gestió de Bases de Dades
- Components Avançats de la Interfície d'Usuari
- Vistes Personalitzades i Canvas
- Treballar amb Tasques en Segon Pla
Mòdul 5: Desenvolupament Professional d'Android
- Implementació de l'Arquitectura MVVM
- Injecció de Dependències amb Dagger
- Proves Unitàries i Proves de la Interfície d'Usuari
- Publicació de la teva Aplicació a Google Play
- Optimització del Rendiment