Les proves unitàries són una part fonamental del desenvolupament de programari, ja que permeten verificar que les unitats individuals de codi funcionin correctament. En el context de Flutter, les proves unitàries es fan per assegurar que les funcions i mètodes del nostre codi Dart es comportin com s'espera.
Objectius d'aquest tema
- Comprendre què són les proves unitàries.
- Aprendre a configurar un entorn de proves unitàries en Flutter.
- Escriure i executar proves unitàries bàsiques.
- Conèixer les bones pràctiques per a les proves unitàries.
Què són les Proves Unitàries?
Les proves unitàries són proves automàtiques que verifiquen el comportament d'una unitat de codi, com ara una funció o un mètode. Aquestes proves es centren en una part específica del codi i comproven que funcioni correctament en diferents situacions.
Beneficis de les Proves Unitàries
- Detecció primerenca d'errors: Les proves unitàries permeten detectar errors en fases primerenques del desenvolupament.
- Facilitat de manteniment: Amb proves unitàries, és més fàcil refactoritzar el codi sense introduir nous errors.
- Documentació: Les proves unitàries poden servir com a documentació del comportament esperat del codi.
Configuració de l'Entorn de Proves
Flutter proporciona un paquet anomenat test
que facilita l'escriptura i execució de proves unitàries. Per començar, hem d'afegir aquest paquet al nostre projecte.
Afegir el Paquet de Proves
- Obre el fitxer
pubspec.yaml
del teu projecte Flutter. - Afegeix la dependència del paquet
test
:
- Executa
flutter pub get
per instal·lar la dependència.
Escriure la Primera Prova Unitària
Anem a escriure una prova unitària per a una funció simple que suma dos nombres.
Exemple de Funció a Provar
Crear un Fitxer de Proves
- Crea un fitxer nou dins del directori
test
del teu projecte, per exemple,test/suma_test.dart
. - Importa el paquet
test
i la funció que vols provar:
Escriure la Prova
void main() { test('suma de dos nombres', () { expect(suma(2, 3), 5); expect(suma(-1, 1), 0); expect(suma(0, 0), 0); }); }
Explicació del Codi
test
: Defineix una prova unitària. El primer argument és una descripció de la prova, i el segon és una funció que conté la lògica de la prova.expect
: Comprova que el resultat de la funciósuma
sigui igual al valor esperat.
Executar les Proves
Per executar les proves, pots utilitzar la línia de comandes:
Això executarà totes les proves dins del directori test
i mostrarà els resultats a la consola.
Bones Pràctiques per a les Proves Unitàries
- Proves Independents: Cada prova ha de ser independent i no ha de dependre de l'estat d'altres proves.
- Cobertura de Codi: Intenta cobrir el màxim de codi possible amb les proves, incloent-hi casos límit i situacions excepcionals.
- Noms Descriptius: Utilitza noms descriptius per a les proves per facilitar la comprensió del que estan provant.
- Refactorització: Refactoritza les proves per evitar duplicació de codi i mantenir-les netes i llegibles.
Exercici Pràctic
Exercici
Escriu una prova unitària per a una funció que multiplica dos nombres.
Funció a Provar
Prova Unitària
- Crea un fitxer nou dins del directori
test
, per exemple,test/multiplica_test.dart
. - Escriu la prova unitària:
import 'package:test/test.dart'; import 'package:el_teu_projecte/multiplica.dart'; void main() { test('multiplicació de dos nombres', () { expect(multiplica(2, 3), 6); expect(multiplica(-1, 1), -1); expect(multiplica(0, 5), 0); }); }
Solució
La solució hauria de ser similar a la prova unitària escrita anteriorment per a la funció suma
.
Conclusió
Les proves unitàries són essencials per assegurar la qualitat del codi i facilitar el manteniment del projecte. En aquest tema, hem après a configurar l'entorn de proves, escriure i executar proves unitàries bàsiques, i seguir bones pràctiques per a les proves unitàries. Amb aquestes habilitats, estaràs millor preparat per desenvolupar aplicacions Flutter robustes i fiables.
Curs de Desenvolupament Flutter
Mòdul 1: Introducció a Flutter
- Què és Flutter?
- Configuració de l'Entorn de Desenvolupament
- Comprensió de l'Arquitectura de Flutter
- Creació de la Teva Primera Aplicació Flutter
Mòdul 2: Conceptes Bàsics de Programació en Dart
- Introducció a Dart
- Variables i Tipus de Dades
- Sentències de Flux de Control
- Funcions i Mètodes
- Programació Orientada a Objectes en Dart
Mòdul 3: Widgets de Flutter
- Introducció als Widgets
- Widgets Stateless vs Stateful
- Widgets Bàsics
- Widgets de Disseny
- Widgets d'Entrada i Formulari
Mòdul 4: Gestió de l'Estat
Mòdul 5: Navegació i Enrutament
- Introducció a la Navegació
- Navegació Bàsica
- Rutes Nomenades
- Passar Dades Entre Pantalles
- Deep Linking
Mòdul 6: Xarxes i APIs
- Obtenir Dades d'Internet
- Analitzar Dades JSON
- Gestió d'Errors de Xarxa
- Ús d'APIs REST
- Integració de GraphQL
Mòdul 7: Persistència i Emmagatzematge
- Introducció a la Persistència
- Preferències Compartides
- Emmagatzematge de Fitxers
- Base de Dades SQLite
- Ús de Hive per a l'Emmagatzematge Local
Mòdul 8: Conceptes Avançats de Flutter
- Animacions en Flutter
- Pintura Personalitzada i Canvas
- Canals de Plataforma
- Isolates i Concurrència
- Optimització del Rendiment
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries
- Proves de Widgets
- Proves d'Integració
- Tècniques de Depuració
Mòdul 10: Desplegament i Manteniment
- Preparació per al Llançament
- Construcció per a iOS
- Construcció per a Android
- Integració i Desplegament Continu (CI/CD)
- Manteniment i Actualització de la Teva Aplicació